【问题标题】:Chrome Extension: Remove body attributes from content scriptChrome 扩展:从内容脚本中删除正文属性
【发布时间】:2016-04-05 22:50:47
【问题描述】:

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

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

取以下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. $ 未定义。

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

【问题讨论】:

    标签: javascript jquery google-chrome dom


    【解决方案1】:

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

    document.body.removeAttribute('onbeforeunload');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-05
      • 2011-04-25
      • 2015-12-24
      • 2017-04-07
      • 2012-07-04
      • 1970-01-01
      相关资源
      最近更新 更多