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