I have a bookmarklet that I’ve made and it loads a script from my server onto the users current page. However I have an if check in my script that if a condition is not met then no action is taken. However if the user then meets that condition then the code is run, but has caused there to be two sets of scripts inserted into their page. Can i prevent this?
<a href="javascript: (function () {
var jsCode = document.createElement('script');
jsCode.setAttribute('src', 'http://xxx.co.uk/xxx/script.js');
document.body.appendChild(jsCode);
}());">Bookmarklet</a>
You can check whether your script is loaded like this:
Alternatively, you could do something like this:
This “pollutes” the global namespace with the
jsCodevariable, but that might be a necessary evil. You could rename it to something that is unlikely to appear in the document where the bookmarklet is run.Please note that while the
javascriptURI scheme is okay for bookmarklets as in this case, it’s not considered to be a good practice for normal use.