繁体   English   中英

Chrome 扩展:注入外部脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM