我有一个简单的chrome用户脚本,用于修改特定网页的Tab键。 这很好用,直到chrome v27来了。这是代码:
的script.js:
// ==UserScript==
// @name Name
// @namespace http://www.someNameSpace.com/
// @description Description
// @include http://weburl1.com/*
// @include http://weburl2.com/*
// ==/UserScript==
function key_event(event){
if(event.keyCode == 9){ //get tab pressed
/* do something here */
}
}
document.addEventListener("keydown", key_event, true);
的manifest.json:
{
"content_scripts": [ {
"all_frames" : true,
"exclude_globs": [ ],
"include_globs": [ "http://weburl1.com/*", "http://weburl2.com/*" ],
"js": [ "script.js" ],
"matches": [ "http://*/*", "https://*/*" ],
"run_at": "document_idle"
} ],
"converted_from_user_script": true,
"description": "Description",
"key": "kVJUyHgHhlZtX2koEeV1ZF7yYHXfLyCyprC+I18+QzI=",
"name": "Name",
"version": "1.01"
}
编辑: 我发现脚本仍然在运行,但只在初始加载的帧上运行。所以我添加了
“all_frames”:true,
到不起作用的清单。
我能做些什么吗? 谢谢你的帮助
答案 0 :(得分:1)
使用Chrome版本27.0.1453.110,脚本再次运行。 另请参阅https://code.google.com/p/chromium/issues/detail?id=242890
答案 1 :(得分:0)
内容脚本与当前页面不在同一上下文中。 您应该通过另一个标记注入事件处理程序
var actualCode = 'function key_event() {'
+ ' if(event.keyCode == 9){'
+ 'alert('tab');
+ '}';
var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);