[英]Chrome Extension: Injecting external script
我正在创建一个 Chrome 扩展,它将script
标记附加到页面,然后使用该外部脚本中定义的代码:
$('body').append('<script src="..."></script><script>console.log(SomeObject)</script>');
SomeObject
是在外部脚本中定义的,所以我应该可以访问它,对吧? 好吧,我不能,因为我收到“未定义”错误。
我什至尝试使用head.js
加载外部脚本并在加载脚本后执行 function,但无济于事。
如果我打开 Chrome 控制台,我可以访问该死的 object 就好了!!!
我在后台页面中尝试了内容脚本和executeScript
均无济于事。 在两者上,如果我使用console.log(window)
,我可以在控制台中检查window
object ,而SomeObject
无处可寻。 如果我在 Chrome 控制台上检查window
object,就可以了!
注入的脚本是否以某种方式被沙盒化或给出了什么?
谢谢!
这就是最终奏效的方法:
var script = document.createElement('script');
script.src = "...";
script.addEventListener('load', function() {
// SomeObject is available!!!
});
document.head.appendChild(script);
我想知道为什么其他方法都不起作用...
我敢打赌,当您立即调用该脚本时,该脚本并未加载,这是否有效:
<script src="..."></script><script>setTimeout(function() {console.log(SomeObject)}, 3000)</script>
因此,由于安全限制,答案似乎是您不能:(
我不得不使用iframe
来破解它(奇怪的是, iframe
可以访问其父文档)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.