2012-03-07 37 views
1

我試圖直接插入一個javascript腳本引用到通過Greasemonkey的網頁。無論出於何種原因,它似乎都不起作用。我的代碼如下:包括通過直接代碼注入遠程JS文件用的Greasemonkey

var headID = document.getElementsByTagName("head")[0];   
    var newScript = document.createElement('script'); 
    newScript.type = 'text/javascript'; 
    newScript.src = 'http://cubes-workbench.googlecode.com/files/test.js'; 
    headID.appendChild(newScript); 

任何幫助將不勝感激。謝謝。

+0

你的JS控制檯告訴你什麼?任何錯誤? '的console.log(headID)'。谷歌「調試JS」 – PiTheNumber 2012-03-07 08:19:29

回答

1

您的代碼應該工作,除非(1挑或以上):

  • 該文件實際上並沒有一個<head>。並非所有頁面或iFrame都可以。
  • Greasemonkey腳本設置爲在文檔啓動時運行。
  • 有一個瀏覽器插件,該塊JS - NoScript的的AdBlockRequestPolicy
  • 防火牆或其它安全應用或設備塊該腳本。
  • 包括排除,或比賽指令阻止GM腳本從該網頁上觸發或iframe如您所願。
  • 還有別的嗎?

對於初學者來說,使用一個標準功能。試試這個:

function addJS_Node (text, s_URL, funcToRun) { 
    var D         = document; 
    var scriptNode       = D.createElement ('script'); 
    scriptNode.type       = "text/javascript"; 
    if (text)  scriptNode.textContent = text; 
    if (s_URL)  scriptNode.src   = s_URL; 
    if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + 
    ')()'; 

    var targ = D.getElementsByTagName('head')[0] 
       || D.body || D.documentElement; 
    targ.appendChild (scriptNode); 
} 

addJS_Node (null, 'http://cubes-workbench.googlecode.com/files/test.js'); 


如果不交你的完整通用腳本,並鏈接到目標網頁的工作。

+0

謝謝,我認爲這是一個瀏覽器插件,搞砸了我。 以這種方式包含腳本文件是否允許網頁使用它,就好像它最初已被編碼一樣? – cubesnyc 2012-03-07 09:01:37

+0

是的。如果遇到複雜問題,請發佈問題,解決方法通常是可能的。 – 2012-03-07 09:16:54