我正在嘗試編寫一個擴展功能,可以彈出並彈出側欄類型視圖,以便快速管理我們的HR幫助中心。鉻擴展命令(熱鍵)
無論如何,我採取了一些現有的東西,並修改它做我想做的。我打算對它進行修改,甚至超過我目前的修改,但是,在我去找我的老闆並說LOOK之前,我想確保其功能在那裏。看到!
我已經基本瞭解如何使用Chrome中的瀏覽器操作圖標。那裏沒有問題。當我嘗試啓用也會打開擴展名的熱鍵時,主要問題就出現了。它不會工作,我已經把我的頭撞到了我的桌子上,而且我需要一些外部幫助。
無論如何,這裏是我處理熱鍵的清單部分。
清單
"commands": {
"toggle-feature": {
"suggested_key": {
"default": "Ctrl+Shift+0",
"mac": "Command+Shift+0"
},
"description": "Toggle the helpcenter screen",
"global": true
},
"_execute_browser_action": {
"suggested_key": {
"windows": "Ctrl+Shift+9",
"mac": "Command+Shift+9",
"chromeos": "Ctrl+Shift+9",
"linux": "Ctrl+Shift+9"
}
}
正如你可以看到我很失望,並在網絡上添加快捷鍵爲每一個系統,並試圖在他們的所有。
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, { action: "toggleSidebar" });
});
chrome.commands.onCommand.addListener(function(tabh) {
chrome.tabs.sendMessage(tabh.id, { action: "toggleSidebarhkey" });
});
第二行可能是完全不正確的,我搞砸與它這麼多次試圖將信息傳遞給擴展。第一行正確處理擴展的一半工作。
content.js
var sidebarURL = "help center server";
var isSidebarOpen = false;
var sidebar = createSidebar();
/* Create a pop-out */
function createSidebar() {
var sb = document.createElement("iframe");
sb.id = "mySidebar";
sb.src = sidebarURL;
sb.style.cssText = ""
+ "border: 3px groove;\n"
+ "width: 50%;\n"
+ "height: 100%;\n"
+ "position: fixed;\n"
+ "top: 0px;\n"
+ "left: 0px;\n"
+ "z-index: 9999;\n"
+ "";
return sb;
}
/* Show/Hide the pop-out */
function toggleSidebar() {
if (isSidebarOpen) {
document.body.removeChild(sidebar);
} else {
document.body.appendChild(sidebar);
}
isSidebarOpen = !isSidebarOpen;
}
**這裏是我遇到麻煩** 我複製並粘貼低於上述代碼,並添加從background.js屏幕標識符。剩下的就剩下了,因爲它應該使用當前值來決定是否要關閉它或打開它。
/* Show/Hide the pop-out via hotkey */
function toggleSidebarhkey() {
if (isSidebarOpen) {
document.body.removeChild(sidebar);
} else {
document.body.appendChild(sidebar);
}
isSidebarOpen = !isSidebarOpen;
}
/* Listen for message from the background-page and toggle the SideBar */
chrome.runtime.onMessage.addListener(function(msg) {
if (msg.action && (msg.action == "toggleSidebar")) {
toggleSidebar();
}
});
** HOT鍵偵聽器** 再次這一部分可能是錯誤的,因爲地獄,但我已經有這麼多嘗試,使其工作,我懷疑任何部分搞砸它是正確的。
/* Listen for message from the background-page and toggle the SideBar via hotkey */
chrome.runtime.onMessage.addListener(function(msg) {
if (msg.action && (msg.action == "toggleSidebarhkey")) {
toggleSidebarhkey();
}
});
說實話,我完全卡住,我猜想你們中間很多人都在思考,「走的想法,因爲它是老闆!」和「你的老闆不會知道!」但我想要額外的酷炫因素,無需搜索按鈕並輕鬆訪問幫助中心門戶中的人力資源。一旦我獲得了「嘿看!!」的基本功能那麼我會擴展,可能會添加一個面板,而不是彈出窗口(如谷歌保留或環聊)誰知道,但我首先需要一個概念證明,我討厭以這種方式未完成的事情。
歡迎SO!我提交了一個編輯您的修補程序塊代碼格式(它不是代碼塊的反色,但4空格縮進)。如果你還可以編輯你的帖子來刪除/減少背景故事(這不是很有用),這將是很好的。 – Xan
1.你只需要一個onMessage監聽器......它可以處理所有傳入的消息2. onCommand監聽器回調函數沒有tab作爲參數,而是命令(就像你的情況下的'toggle-feature') – devnull69
@ devnull69避免在評論中回答問題。 – Xan