透過程式輔助方式將網頁存取權授予 ChromeOS Desk

1. 事前準備

Desk Connector 是 ChromeOS 功能,可讓網頁透過程式輔助方式存取 ChromeOS 虛擬桌面。在本程式碼研究室中,您會瞭解如何將 Desk Connector 與 Chrome 開發人員工具搭配使用。

必要條件

課程內容

  • 如何設定視窗屬性。
  • 如何啟動桌面。
  • 如何移除桌面。
  • 如何連線使用中的桌面。
  • 如何切換至其他桌面。

軟硬體需求

2. 做好準備

如要開始設定,請按照下列步驟操作:

  1. 在這個網頁上按一下滑鼠右鍵,然後點選「檢查」
  2. 在 Chrome 開發人員工具面板中,按一下 [Console]。您將在「Console」面板中執行本程式碼研究室中的所有程式碼。
  3. (選用) 在程式碼研究室中,按下 F5[]|| 即可進入總覽模式,手動與虛擬桌面互動。

7a5398f02e46d103.png

3. 設定視窗屬性

SetWindowProperties API 可讓網頁透過程式設定視窗屬性。將 allDesks 屬性設為 true 值後,該屬性會將目前分頁的視窗固定到所有桌面。

如要設定視窗屬性,請按照下列步驟操作:

  1. 在「Console」面板中,將視窗設為顯示在所有桌面:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": true
    }
   },
  function(response) {
      console.log(response);
  }
);
  1. 設定讓視窗再次顯示在單一桌面上:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond",{
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": false
    }
   },
  function(response) {
     console.log(response);
  }
);
  1. 將視窗再次固定到所有桌面,以便進行示範:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": true
    }
   },
  function(response) {
     console.log(response);
  }
);

如果 Chromebook 上有多個虛擬桌面,現在所有桌面都會顯示目前的視窗。

4. 取得使用中的桌面

GetActiveDesk API 可讓網頁透過程式查詢目前使用中的桌面。

  • 如要取得目前使用中的桌面,請擷取目前的桌面 ID,然後將 deskUuid 屬性儲存在 baseDesk 變數中:
let baseDesk;
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "GetActiveDesk",
    },
   function(response) {
    console.log(response);
    if(response && response.operands) {
    baseDesk = response.operands.deskUuid; 
   }       
  }
);

5. 啟動桌面

LaunchDesk API 可讓網頁以程式輔助方式啟動並切換至空白桌面。

如要啟動桌面,請按照下列步驟操作:

  1. 啟動名為「test」的桌面。
  2. 建立 newDesk1 變數,用於儲存桌面的 deskUuid 屬性。
let newDesk1;                   
chrome.runtime.sendMessage(
    "oagemgapjncacjdaockjfaidedggjond", {
        "messageType": "LaunchDesk",
        "operands": {
            "deskName": "test"           
        }
    },
    function(response) {
     console.log(response);
     if(response&&response.operands) {
     newDesk1 = response.operands.deskUuid;   
    }  
   }
);

系統會將您帶往新啟用的桌面。如果控制台視窗位於原本的視窗,則控制台視窗會顯示原桌面。如要切換至原始桌面,請按下 F5[]|| 鍵。

可以同時擁有最多八個桌面。如果 API 傳回 DesksCountCheckFailedError 錯誤,您必須先移除部分桌面,才能再啟動其他桌面。

6. 移除桌面

RemoveDesk API 可讓網頁依桌面 ID 以程式輔助方式移除桌面。可以關閉桌面上的所有視窗。

為簡單起見,您可以移除新啟動的桌面。不過實際上,網頁可能會依桌面 ID 移除任何指定的桌面。

如要移除桌面,請按照下列步驟操作:

  1. 移除新啟動的桌面:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "RemoveDesk",
    "operands": {
        "deskId": newDesk1                        
    }
  },
  function(response) {
     console.log(response);
  }
);
  1. 在要求您確認或捨棄移除要求的對話方塊中,確認要移除桌面。關閉桌面上的所有視窗。

ChromeOS 關閉所有視窗通知

  1. 如果想呼叫 API 以移除桌面,而不顯示確認視窗,請使用 skipConfirmation 參數:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "RemoveDesk",
    "operands": {
        "deskId": newDesk1,
        "skipConfirmation":true
   }
  },
  function(response) {
     console.log(response);
  }
);

7. 切換至其他桌面

SwitchDesk API 可讓網頁透過程式輔助方式切換至指定的桌面。

為了方便起見,您啟動了一個桌面並切換至上一個桌面。不過實際上,網頁可根據桌面 ID 切換至任何指定的桌面。

如要切換到其他桌面,請按照下列步驟操作:

  1. 啟動桌面:
let newDesk1;                   
chrome.runtime.sendMessage(
    "oagemgapjncacjdaockjfaidedggjond", {
        "messageType": "LaunchDesk",
        "operands": {
            "deskName": "test"          
        }
    },
    function(response) {
     console.log(response);
     if(response && response.operands) {
     newDesk1 = response.operands.deskUuid;
    }     
   }
);
  1. 切換至上一個桌面:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SwitchDesk",
    "operands": {
        "deskId": baseDesk                 
   }
  },
   function(response) {
       console.log(response); 
  }
);

8. 恭喜

恭喜!您已瞭解如何使用 Desk Connector Demo 擴充功能和 Chrome 開發人員工具,透過程式輔助方式將網頁存取權授予 ChromeOS Desk。

瞭解詳情