2013-01-12 41 views

回答

6

您可以簡單地創建一個腳本元素,並將其添加到文檔

// ==UserScript== 
// @name  My Fancy New Userscript 
// @description enter something useful 
// @match  http://*/* 
// ==/UserScript== 

(function() { 
    var scriptElement = document.createElement("script"); 
    scriptElement.type = "text/javascript"; 
    scriptElement.src = "url to your script"; 
    document.body.appendChild(scriptElement); 
})(); 

如果你只是希望腳本運行,那麼這個足夠。 如果你想在你的腳本中使用jQuery庫,它會變得棘手。 有2種方式,我所知道的:

  • 一種是使用的Greasemonkey的require標籤。
  • 另一個需要像上面顯示的腳本元素的創建,但您需要等待它加載,所以需要scriptElement.onload = function() {},然後您必須使用unsafeWindow來訪問您的庫中的變量。

如果這是純粹的greasemonkey腳本,我推薦第一種方法,因爲只有腳本封裝在網站上。

+0

用於'@ require'的+1。您不需要將這些代碼封裝在匿名函數中。 –

+0

我可以多次重複使用變量'scriptElement',以獲取多個外部JavaScript? (如script1.js和script2.js) –

+0

此外,有沒有辦法判斷這是否實際執行並將其添加到網站?因爲它爲我提供了一個腳本,它將從遠程.js腳本中提取實時信息和數據,而不是,因此我的問題。 –

0

是的,比如,你可以這樣做:

let script = document.createElement('script'); 
script.src = "http://example.com/somescript.js"; 
document.body.appendChild(script); // execute the script 
document.body.removeChild(script); 
+0

它不工作,如果我需要從http加載腳本爲https – fdrv

+0

這將始終執行腳本?在取消孩子之前,不需要等待執行確認? –

相關問題