一些网站
<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 扩展删除(取消绑定(bind))dblclick 事件?
最佳答案
原因:
您可以覆盖document.ondblclick
。问题在于上下文。您有 chrome-extension 上下文和 page-context。
为了进行测试,您可以在扩展程序中添加以下内容:
document.ondblclick = function () {
alert("chrome extension ondblclick event");
}
您可以在两种上下文中查看该事件:
如果您触发此事件,您将看到这两个事件都被调用。
解决方案:
您需要的是覆盖页面上下文中的ondblclick
。真正简单的方法是将您自己的脚本添加到页面中 - 然后它将在页面上下文中运行。
要注入(inject)脚本,您可以编写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);
}());
并且您需要必须注入(inject)的脚本。在本例中,这是 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"
]
}
就是这样。
注入(inject) 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);
}());
然后您可以从 manifest.json
中删除 web_accessible_resources
。
关于javascript - 如何使用 chrome 扩展解除 document.ondblclick 的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115653/