这不是重复...而是延续
我在从 Chrome 扩展程序中删除 body 标记的属性时遇到问题。我已经阅读了很多相关内容,但仍然遇到问题。
采用以下正文元素:
<body onbeforeunload="bye()" leftmargin="0" topmargin="0">
我想完全删除 onbeforeunload
事件。我可以将脚本注入(inject)页面,但仍然无法删除事件;尽管它确实运行了。所以问题纯粹是注入(inject)的脚本删除了事件。
这是注入(inject)的脚本。
document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>');
console.log("onload called");
document.removeEventListener(onload);
document.removeEventListener(onmouseover);
document.removeEventListener(onbeforeunload);
var r = document.getElementById("body");
if (r !== null)
console.log("Found Body");
$('body').onload.off();
$('body').onbeforeunload.off();
- document.write 失败。
- console.log 有效。
- 其余代码失败。
- $ 未定义。
任何删除该属性的帮助将不胜感激。
最佳答案
您正在混合来自 content script 的 JavaScript 上下文从网页来看:它们不同,但共享相同的 DOM。
这就是为什么 $
未定义,因为它被插入到网页中,但在内容脚本中使用。
只从 body 标记中删除该属性怎么样?
document.body.removeAttribute('onbeforeunload');
关于javascript - Chrome 扩展程序 : Remove body attributes from content script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34555341/