某些网站
<SCRIPT SRC="js/tt2.js"></SCRIPT>
tt2.js
toggle=0;
function dblclick() {
if (toggle==0) {
var sc=99999; toggle=1;
} else {
var sc=0; toggle=0;
}
window.scrollTo(0,sc);
}
if (document.layers) {
document.captureEvents(Event.ONDBLCLICK);
}
document.ondblclick=dblclick;
“document.ondblclick = null;”是不行的。 如何使用chrome扩展名删除(解除绑定)dblclick事件?
答案 0 :(得分:1)
<强>原因:强>
您可以覆盖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");
}
警报仅用于测试。看到它按预期工作后删除它。
最后一步是调整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
。