【发布时间】:2016-07-14 00:34:02
【问题描述】:
我正在构建一个浏览器扩展程序,我在 <script> 标记内有一个函数,可以修改我需要注入到任何给定网页的 <head> 的 DOM。整个函数是一个字符串("<script>function content blah blah</script>")。我正在使用 jquery 来实现这一点:
$('head').prepend(modFunction);
这很好用。出于几个原因,我想删除 jQuery,但是当我尝试创建一个 <script> 元素以使用 vanilla javascript 注入 <head> 时,一切都失败了。到目前为止,我已经尝试了两种方法:
1.
var headSelector = document.querySelector('head');
var el = document.createElement('div');
el.innerHTML = modFunction;
modFunction = el.firstChild;
headSelector.insertBefore(modFunction, headSelector.firstChild);
2.document.head.insertAdjacentHTML('afterbegin', modFunction);
两次 javascript 尝试都将具有正确功能的 <script> 标记注入到 <head> 中,但是都没有执行该函数。不知道为什么 jQuery 可以工作,而 vanilla javascript 不能。任何帮助将不胜感激。谢谢
【问题讨论】:
-
如果你是动态插入脚本,你插入的位置真的无关紧要。你最好还是坚持身体。
-
从上面的源代码看来,您正在尝试插入
div而不是script标记.. -
document.getElementsByTagName('script')[0].parentNode.insertBefore(document.createElement('script'), document.getElementsByTagName('script')[0]);这只有在您有一个现有的脚本标签时才有效,我假设您会这样做,因为您希望它在页面加载时运行
标签: javascript jquery html dom google-chrome-extension