2016-04-13 54 views
0

我想將「script.js」替換爲「demo.js」。任何人請幫助我如何使用Greasemonkey代碼替換頭文件

<head> 

    <script src="script.js" type="text/javascript" language="javaScript"></script>  

</head> 
+0

爲什麼這會降低投票率?如果它是重複的,應該注意。 – leewz

回答

0

這個問題其實不是真正的描述性,但Greasemonkey實際上是使用JavaScript。因此,讓我們假設你的頁面中有「head」元素,並且你想把它作爲「head」元素中的單個元素。

在Javascript中,你可以通過以下實現這一點:

var e = '<script src="script.js" type="text/javascript" language="javaScript"></script>'; 
document.head.innerHTML = e; 

爲了追加它,你可以只添加加號在第二個命令等號盈:

var e = '<script src="script.js" type="text/javascript" language="javaScript"></script>'; 
document.head.innerHTML += e; 

編輯: 最終,如果您有單個指向此類源javascript文件的script元素,您還可以使用此元素來識別元素並直接替換屬性值:

document.querySelectorAll('script[src="script.js"]')[0].setAttribute('src','demo.js'); 
2

請儘早運行腳本@run-at document-start。添加事件偵聽器beforescriptexecute並檢查腳本源。當您檢測到所需的腳本時,請調用事件的preventDefault方法並替換DOM中的腳本標記。

// ==UserScript== 
// @name  demo-scriptreplace 
// @include  http://example.com/* 
// @version  1 
// @run-at  document-start 
// ==/UserScript== 

window.addEventListener('beforescriptexecute', 
    function(event) 
    { 
    var originalScript = event.target; 

    // debug output of full qualified script url 
    console.log('script detected:', originalScript.src); 

    // script ends with 'originalscript.js' ? 
    // you can test as well: '<full qualified url>' === originalScript.src 
    if(/\/originalscript\.js$/.test(originalScript.src)) 
    { 
     var replacementScript = document.createElement('script'); 
     replacementScript.src = 'replacementscript.js'; 

     originalScript.parentNode.replaceChild(replacementScript, originalScript); 

     // prevent execution of the original script 
     event.preventDefault(); 
    } 
    } 
);