共用方式為


測試 JavaScript API

Take a Test 是一款基於瀏覽器的 UWP 應用程式,能呈現鎖定的線上評量,以應付高風險測驗,讓教育者能專注於評量內容,而非如何提供安全的測驗環境。 為此,它使用任何網頁應用程式都能使用的 JavaScript API。 Take-a-test API 支援 SBAC 瀏覽器 API 標準 ,適用於高風險的共同核心測試。

欲了解更多關於該應用程式本身的資訊,請參閱 Take a Test 應用程式的技術參考 資料。 如需故障排除協助,請參閱「 用事件檢視器進行 Microsoft Take a Test 的故障排除」。

參考文件

Take a Test API 存在於以下命名空間中。 請注意,所有 API 都依賴於一個全域 SecureBrowser 物件。

Namespace Description
安全命名空間 包含 API,讓你能鎖定裝置進行測試並強制執行測試環境。

安全命名空間

安全命名空間允許你鎖定裝置、檢查使用者與系統程序清單、取得 MAC 和 IP 位址,以及清除快取的網路資源。

方法 Description
封鎖 將裝置鎖定以進行測試。
isEnvironmentSecure 判斷鎖定情境是否仍套用於裝置。
getDeviceInfo 取得測試應用程式所運行平台的詳細資訊。
examineProcessList 取得正在執行的使用者與系統程序清單。
關閉瀏覽器並解鎖裝置。
getPermissiveMode 檢查允許模式是開啟還是關閉。
setPermissiveMode 切換允許模式為開啟或關閉。
emptyClipBoard 清除系統剪貼板。
getMACAddress 取得裝置的 MAC 位址清單。
getStartTime 它能取得測試應用程式啟動的時間。
getCapability 查詢某項能力是否啟用或停用。
setCapability 啟用或停用指定功能。
isRemoteSession 檢測目前會話是否遠端登入。
isVMSession 檢查目前的會話是否在虛擬機中執行。

鎖定模式

鎖定裝置。 也用來解鎖裝置。 測試網頁應用程式會在允許學生開始測驗前啟動此呼叫。 實作者必須採取任何必要行動來保障測試環境的安全。 保護環境的步驟因裝置而異,例如關閉螢幕擷取、在安全模式下關閉語音聊天、清除系統剪貼簿、進入自助服務亭模式、在 OSX 10.7+ 裝置中停用 Spaces 等。測驗應用程式會在評量開始前啟用封鎖,並在學生完成評量且離開安全考試時解除封鎖。

Syntax
void SecureBrowser.security.lockDown(Boolean enable, Function onSuccess, Function onError);

參數

  • enable - 啟動 Take-a-Test 應用程式,使其在鎖定畫面上方運行,並套用 Take-a-Test 應用程式技術參考中討論的政策。 false 會停止在鎖定畫面上方執行 Take-a-Test,除非應用程式未被鎖定,否則會關閉該視窗;在這種情況下,就沒有影響。
  • onSuccess - [可選] 在鎖定功能成功啟用或停用後呼叫的函式。 它必須是形式 Function(Boolean currentlockdownstate)
  • onError - [可選] 鎖定操作失敗時呼叫的函式。 它必須是形式 Function(Boolean currentlockdownstate)

要求
Windows 10 版本 1709 或更新版本。


環境是否安全

判斷鎖定情境是否仍套用於裝置。 考試網頁應用程式會在學生開始測試前及測試期間定期調用此功能。

Syntax
void SecureBrowser.security.isEnvironmentSecure(Function callback);

參數

  • callback - 當該函式完成時要呼叫的函式。 它必須是包含兩個欄位的 JSON 字串形式Function(String state)state。 第一個是欄位 secure,只有在所有必要的鎖已啟用(或功能被停用),以便啟用安全的測試環境時,此欄位才會顯示 true,而且自從應用程式進入封鎖模式後,這些鎖定或功能都未被破解。 另一個欄位 messageKey,包含其他供應商專屬的細節或資訊。 此處的目的是讓廠商能加入額外資訊,以增強布林值 secure 標記:
{
    'secure' : "true/false",
    'messageKey' : "some message"
}

要求
Windows 10 版本 1709 或更新版本


getDeviceInfo

取得測試應用程式所運行平台的詳細資訊。 此功能用以增強用戶代理可辨識的任何資訊。

Syntax
void SecureBrowser.security.getDeviceInfo(Function callback);

參數

  • callback - 當該函式完成時要呼叫的函式。 它必須是包含多個欄位的 JSON 字串形式Function(String infoObj)infoObj。 以下欄位必須支援:
    • os 代表作業系統類型(例如:Windows、macOS、Linux、iOS、Android 等)
    • name 代表作業系統的發行名稱(例如:Sierra、Ubuntu)。
    • version 代表作業系統版本(例如:10.1、10 Pro 等)
    • brand 代表安全的瀏覽器品牌(例如:OAKS、CA、SmarterApp 等)
    • model 僅代表行動裝置的裝置模型;桌面瀏覽器則是空/未使用。

要求
Windows 10 版本 1709 或更新版本


examineProcessList (檢查流程清單)

取得使用者擁有的客戶端機器上所有正在執行的程序清單。 測試應用程式會啟動此條件來檢視清單,並與測試週期中被認定為拒絕名單的流程清單進行比較。 此呼喚應在評量開始時及學生進行評量時定期啟動。 若偵測到拒絕名單的流程,應停止評估以維護測試完整性。

Syntax
void SecureBrowser.security.examineProcessList(String[] denylistedProcessList, Function callback);

參數

  • denylistedProcessList - 測試應用程式已拒絕列出的程序清單。
    callback - 在找到活躍程序後調用的函式。 它必須是形式: Function(String foundDenylistedProcesses) 其中 foundDenylistedProcesses 形式為: "['process1.exe','process2.exe','processEtc.exe']"。 如果找不到拒絕名單的流程,該系統將是空的。 若為空值,表示原始函式呼叫發生錯誤。

備註 此清單未包含系統程序。

要求
Windows 10 版本 1709 或更新版本


關閉

關閉瀏覽器並解鎖裝置。 測試應用程式應在使用者選擇退出瀏覽器時啟動此程序。

Syntax
void SecureBrowser.security.close(restart);

參數

  • restart - 此參數被忽略,但必須提供。

備註 在 Windows 10 版本 1607 中,裝置必須一開始就鎖定。 在後續版本中,無論裝置是否鎖定,此方法都會關閉瀏覽器。

要求
Windows 10 版本 1709 或更新版本


getPermissiveMode

測試網頁應用程式應調用此參數來判斷允許模式是開啟還是關閉。 在允許模式下,瀏覽器預期會放寬部分嚴格的安全鉤子,以允許輔助技術與安全瀏覽器協同運作。 例如,積極阻止其他應用程式介面在它們上方呈現的瀏覽器,可能想在允許模式下放寬這個限制。

Syntax
void SecureBrowser.security.getPermissiveMode(Function callback)

參數

  • callback - 當此呼叫完成時,要調用的函式。 它必須以以下形式 Function(Boolean permissiveMode) :其中 permissiveMode 表示瀏覽器目前是否處於允許模式。 若為未定義或空,則表示取得操作發生錯誤。

要求
Windows 10 版本 1709 或更新版本


setPermissiveMode

測試網頁應用程式應該會調用此參數來切換允許模式的開關。 在允許模式下,瀏覽器預期會放寬部分嚴格的安全鉤子,以允許輔助技術與安全瀏覽器協同運作。 例如,積極阻止其他應用程式介面在它們上方呈現的瀏覽器,可能想在允許模式下放寬這個限制。

Syntax
void SecureBrowser.security.setPermissiveMode(Boolean enable, Function callback)

參數

  • enable - 布林值,表示預期的允許模式狀態。
  • callback - 當此呼叫完成時,要調用的函式。 它必須以以下形式 Function(Boolean permissiveMode) :其中 permissiveMode 表示瀏覽器目前是否處於允許模式。 若未定義或為空,則表示集合操作發生錯誤。

要求
Windows 10 版本 1709 或更新版本


空剪貼簿

清除系統剪貼板。 測試應用程式應呼叫此命令,強制清除系統夾板中可能儲存的資料。 lockDown 函式也執行此操作。

Syntax
void SecureBrowser.security.emptyClipBoard();

要求
Windows 10 版本 1709 或更新版本


getMACAddress

取得裝置的 MAC 位址清單。 測試應用程式應會引用此資訊以協助診斷。

Syntax
void SecureBrowser.security.getMACAddress(Function callback);

參數

  • callback - 當此呼叫完成時,要調用的函式。 它必須是形式: Function(String addressArray) 其中 addressArray 形式為: "['00:11:22:33:44:55','etc']"

Remarks
由於學校常用防火牆、NAT 或代理伺服器,難以依賴來源 IP 來區分測試伺服器內的終端使用者機器。 MAC 位址讓應用程式能區分最終用戶端機器,這些機器位於共用防火牆後,以便診斷。

要求
Windows 10 版本 1709 或更新版本


getStartTime

它能取得測試應用程式啟動的時間。

Syntax
DateTime SecureBrowser.security.getStartTime();

返回
一個DateTime物件,表示測試應用程式啟動的時間。

要求
Windows 10 版本 1709 或更新版本


getCapability

查詢某項能力是否啟用或停用。

Syntax
Object SecureBrowser.security.getCapability(String feature)

參數

feature - 用於決定查詢哪個功能的字串。 有效的功能字串包括「screenMonitoring」、「printing」和「textSuggestions」(大小寫不區分)。

回報價值
此函式會回傳 JavaScript 物件或字面量,形式為:{<feature>:true|false}若查詢 能力已啟用,則為 true;若未啟用該能力或能力字串無效,則為 false

需求 Windows 10,版本 1703 或更新版本


設定能力

啟用或停用瀏覽器的特定功能。

Syntax
void SecureBrowser.security.setCapability(String feature, String value, Function onSuccess, Function onError)

參數

  • feature - 決定要設定哪個能力的字串。 有效的能力字串為 "screenMonitoring"、 、 "printing""textSuggestions" (大小寫不區分)。
  • value - 該功能的預期設定。 它必須是 "true""false"
  • onSuccess - [可選性] 在集合操作成功完成後呼叫的函式。 必須是Function(String jsonValue) 的形式,其中 jsonValue 是:{<feature>:true|false|undefined}
  • onError - [可選] 若集合操作失敗時呼叫的函式。 它必須是 Function(String jsonValue)jsonValue 的形式為: {<feature>:true|false|undefined}

Remarks
如果目標功能瀏覽器未知,這個函式會將 的 undefined 值傳給回調函式。

需求 Windows 10,版本 1703 或更新版本


isRemoteSession(是否為遠端會話)

檢測目前會話是否遠端登入。

Syntax
Boolean SecureBrowser.security.isRemoteSession();

傳回值
如果目前會話是遠端,則為 true;否則為 false

要求
Windows 10 版本 1709 或更新版本。


isVMSession

檢查目前的會話是否在虛擬機器中運行。

Syntax
Boolean SecureBrowser.security.isVMSession();

傳回值
若當前會話正在虛擬機器中執行,則為 true;否則為 false

Remarks
此 API 檢查只能偵測在某些實作適當 API 的虛擬機管理程式中運行的虛擬機的會話

要求
Windows 10 版本 1709 或更新版本。