javascript - Chrome 扩展程序 : Remove body attributes from content script

标签 javascript jquery google-chrome dom

这不是重复...而是延续

我在从 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();
  1. document.write 失败。
  2. console.log 有效。
  3. 其余代码失败。
  4. $ 未定义。

任何删除该属性的帮助将不胜感激。

最佳答案

您正在混合来自 content script 的 JavaScript 上下文从网页来看:它们不同,但共享相同的 DOM。
这就是为什么 $ 未定义,因为它被插入到网页中,但在内容脚本中使用。
只从 body 标记中删除该属性怎么样?

document.body.removeAttribute('onbeforeunload');

关于javascript - Chrome 扩展程序 : Remove body attributes from content script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34555341/

相关文章:

javascript - 修改模型中的数组时,Ember 模板不会更新

javascript - 如何在鼠标悬停时显示滚动条?

javascript - 未捕获的语法错误将多个值传递给函数

c# - $.Ajax POST,访问返回数据

google-chrome - 如何在 Chrome 调试器中查看 enctype = "multipart/form-data"的表单数据

java - 找不到带有 JSON 配置文件的 Chrome 二进制文件

javascript - 复选框图像替换,没有任何反应

javascript - 正则表达式替换链接

asp.net - 如何使用 jquery "jsonp"调用外部Web服务?

html - 如何防止输入中的文本被覆盖