Chrome扩展程序:从内容脚本

时间:2016-01-01 10:26:36

标签: javascript jquery google-chrome dom

这不是重复......这是一个延续

我在从Chrome扩展程序中删除body标记中的属性时遇到问题。我已经阅读了很多相关内容,但我仍然遇到问题。

采取以下身体元素:

<body onbeforeunload="bye()" leftmargin="0" topmargin="0">

我想完全删除onbeforeunload事件。我可以将我的脚本注入页面,但仍然无法删除该事件;虽然它确实运行。所以问题纯粹是注入脚本删除事件。

这是注入的脚本。

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. $未定义。
  5. 任何获取该属性的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您正在混合来自content script和网页的JavaScript上下文:它们不同,但共享相同的DOM。
这就是$未定义的原因,因为它已插入到网页中,但在内容脚本中使用。
如何从body标签中删除属性呢?

document.body.removeAttribute('onbeforeunload');