原因:
您可以覆盖document.ondblclick
. 问题是上下文。您有 chrome 扩展上下文和页面上下文。
为了进行测试,您可以在扩展中添加以下内容:
document.ondblclick = function () {
alert("chrome extension ondblclick event");
}
您可以在这两种情况下查看事件:
如果您触发此事件,您将看到两个事件都被调用。
解决方案:
您需要的是ondblclick
在页面上下文中覆盖。真正简单的方法是将您自己的脚本添加到页面中 - 然后它将在页面上下文中运行。
要注入脚本,您可以编写inject.js
:
(function(){
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.setAttribute('src', chrome.runtime.getURL('js/ownOndblclick.js'));
document.getElementsByTagName('head')[0].appendChild(scriptElement);
}());
你需要你必须注入的脚本。在这种情况下,这是ownOndblclick.js
:
document.ondblclick = function () {
alert("free");
}
alert 仅用于测试。在您看到它按预期工作后将其删除。最后一步是调整manifest.json
:
{
...
"permissions": [
"http://whereever/*"
],
"content_scripts": [
{
"matches": ["http://whereever/*"],
"js": ["js/inject.js"]
}
],
"web_accessible_resources" : [
"js/ownOndblclick.js"
]
}
而已。
注入的替代方法ownOndblclick.js
是将其直接放入inject.js
:
(function(){
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.innerText = 'document.ondblclick = function () { alert("free");}';
document.getElementsByTagName('head')[0].appendChild(scriptElement);
}());
然后你可以web_accessible_resources
从manifest.json
.