簡體   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