How To Replace Head Script Using Greasemonkey Code
Solution 1:
Run your script early by @run-at document-start
. Add an event listener beforescriptexecute
and check the script source. When you detect the desired script, call preventDefault
method of the event and replace the script tag in the 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 urlconsole.log('script detected:', originalScript.src);
// script ends with 'originalscript.js' ?// you can test as well: '<full qualified url>' === originalScript.srcif(/\/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();
}
}
);
Solution 2:
The question is actually not really descriptive, but Greasemonkey is actually using javascript. So let's assume you have "head" element in your page and you want this as a single element inside of "head" element.
That in Javascript you can achieve this by following:
var e = '<scriptsrc="script.js"type="text/javascript"language="javaScript"></script>';
document.head.innerHTML = e;
In order to append it you can just add plus sign infront of equal sign in second command:
var e = '<scriptsrc="script.js"type="text/javascript"language="javaScript"></script>';
document.head.innerHTML += e;
EDIT:
Eventually, if you have single script
element pointing to such source javascript file, you can also use this to identify element and replace attribute value directly:
document.querySelectorAll('script[src="script.js"]')[0].setAttribute('src','demo.js');
EDIT: Important to point out is, that this answers the question how to replace. You still may need to prevent original script from being executed as mentioned by Quasimodo (though it was not part of question)
Post a Comment for "How To Replace Head Script Using Greasemonkey Code"