0
我想創建一個Chrome擴展可以解釋通過鍵盤給出的命令。 此擴展的目的是,如果用戶按下ALT + A然後在警報框中顯示的標籤ID流序列在Chrome擴展
Manifest File :
{
"manifest_version": 2,
"name": "Toggle",
"description": "This App ",
"version": "1.0",
"background": {
"persistent": true,
"scripts": ["TabBackGround.js"]
},
"commands":
{
"toggle" :
{
"suggested_key": {
"default": "Alt+A",
"mac": "Command+Shift+Y"
},
"description" : "Toggle the tabs"
}
},
"permissions": ["tabs", "background"],
"browser_action": {
"default_title": "This App will help to toggle through tabs on which videos is running",
"default_icon": "hello.png"
}
}
TabBackGround.js
var globalId;
chrome.commands.onCommand.addListener(function(command) {
if (command == "toggle")
{
alert ("Command Resolved.");
var queryGetTabs = chrome.tabs.query({active: true, currentWindow: true}, function(arrayOfTabs) {
alert ("Function Executed.");
var activeTab = arrayOfTabs[0];
var activeTabId = arrayOfTabs[0].id;
globalId = activeTabId;
});
alert ("Pressed Toggle : " + globalId);
}
});
輸出:命令解決。 按下切換 函數中執行。 我想了解什麼是JavaScript執行的流程。按下切換按鈕之前不應該執行功能聲明。
有沒有辦法讓查詢調用同步? – 2014-09-30 06:48:12
總之,沒有。這個調用實際上並不是在JavaScript中發生,而是在Chrome的本地代碼中發生,我認爲這些代碼與頁面的JS不同步。如果您想要一些更好的工具來處理異步代碼,您可以查看[Promises](http://www.html5rocks.com/en/tutorials/es6/promises/)。儘管在這裏可能是一個矯枉過正的問題。 – Xan 2014-09-30 06:52:22
好感謝您的回覆。我瞭解同步和異步呼叫之間的區別,並相應地對代碼進行了更改。我正在嘗試顯示當前活動選項卡的選項卡標識和選項卡URl。 – 2014-10-01 04:31:27