Chrome扩展命令(热键)
chrome extension commands (hotkeys)
我正在尝试编写一个扩展,将弹出和弹出侧边栏类型视图,以允许快速管理我们的人力资源帮助中心。
无论如何,我已经采取了一些现有的东西,并修改它做我想要的。我计划对它进行修改,甚至比我目前拥有的还要多,但是,我想确保在我去找我的老板说"看"之前,功能已经存在了!看!
我已经得到了在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();
}
});
**热键监听器**再一次,这部分可能是错误的,但我已经把它弄得一团糟,试图使它工作,我怀疑它的任何部分是正确的。
/* 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();
}
});
老实说,我完全被困住了,我想你们中的许多人都在想,"把这个想法告诉老板!"answers"你的老板不会知道的!"但我想要额外的酷因素,不需要在帮助中心门户网站上寻找按钮和轻松访问人力资源的东西。一旦我得到了"嘿,看!!"的基本功能,然后我将展开,也许添加一个面板而不是弹出式(如google keep或hangouts),谁知道呢,但我首先需要一个概念证明,我讨厌以这种方式留下未完成的东西。
正如chrome.command
上的文档所解释的那样,onMessage
侦听器的回调将命令作为参数,而不是Tab对象。
因此,在回调中,你需要找出哪个选项卡是活动的:
chrome.commands.onCommand.addListener( function(command) {
if(command === "toggle-feature"){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, { action: "toggleSidebarhkey" });
});
}
});
- 当我点击jsf中的primefaces命令按钮时,如何获得点击事件
- 如何使用Socket.io将命令从客户端发送到服务器
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 命令行中的Uglify js;不要弄乱变量名
- http.listen()在运行时接受终端命令
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 如何将给定的curl命令复制为jquery ajax请求
- 打开抽屉的Javascript打印命令
- 全局窗口热键在最小化chrome窗口时调用js函数
- Web控制台命令不起作用
- 如何使用脚本在jsf中执行命令按钮的自动点击
- 类似HTML命令行的文本框
- 命令“;节点"做
- 节点JS express和控制台输出到命令行与浏览器
- 如何将.json文件作为参数导入.js文件并使用命令行启动它
- 编辑弹出窗口的HTML的单击命令
- 为什么我的关键命令不起作用
- Javascript不能在一个命令中使用函数参数
- 最小化CSS/JS文件,并使用命令行创建一个文件
- Chrome扩展命令(热键)