我想將「script.js」替換爲「demo.js」。任何人請幫助我如何使用Greasemonkey代碼替換頭文件
<head>
<script src="script.js" type="text/javascript" language="javaScript"></script>
</head>
我想將「script.js」替換爲「demo.js」。任何人請幫助我如何使用Greasemonkey代碼替換頭文件
<head>
<script src="script.js" type="text/javascript" language="javaScript"></script>
</head>
這個問題其實不是真正的描述性,但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');
請儘早運行腳本@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();
}
}
);
爲什麼這會降低投票率?如果它是重複的,應該注意。 – leewz