I trying to append scripts in client side:
example :
var script = '<script type="text/javascript">document.write(\'<script type="text/javascript" src=""><\\/script>\');</script> '
$('body').html(script );
getting error : Uncaught TypeError: Cannot call method 'hasAttribute' of null
Try this:
var scriptlog =document.createElement('script');
scriptlog.type ='text/javascript';
scriptlog.src =url;
$('body').append( script );
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src",
"your js url");
By JAVASCRIPT
// Try to find the head, otherwise default to the documentElement
(document.getElementsByTagName("script")[0] || document.documentElement).insertBefore(script_tag);
By JQUERY
$("head").append(script_tag);
If you want to Dynamically add Scripts inside HTML element -
var script = document.createElement( "script" );
script.type = "text/javascript";
script.src = "script.js";
$("body").append(script);
Refrence
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'a.js';
document.head.appendChild(script)
Related
So I have this code from another article
// Load the script
var script = document.createElement("SCRIPT");
script.src = 'https://cdn.jsdelivr.net/npm/darkmode-js#1.5.5/lib/darkmode-js.min.js';
script.type = 'text/javascript';
script.onload = function() {
var $ = window.jQuery;
// Use $ here...
};
document.getElementsByTagName("head")[0].appendChild(script);
})();
Where do I add the code below to the above code
new Darkmode({ label: '🌓' }).showWidget();
I've got this script
<script type="text/javascript">
var script = document.createElement('SCRIPT');
script.type = 'text/javascript';
script.src = 'http://streamunit.nl:9031/stats?json=1&callback=serverInfo';
document.body.appendChild(script);
</script>
var toto = "";
function serverInfo(res) {
var str = res.songtitle;
But I need to change the script.src to a xml and get the songtitle from that xml. Because my server doesn't have the json.
The xml file is the same as on this server http://streamunit.nl:9031/stats?sid=1
Who can help me change this script?
Fixed it.
Used a proxy to get te same json over https (SSL)
I am using Javascript to generate additional custom javascript and then adding it to the HEAD tag. The code below works great adding a javascript file, but what if the script is in a variable just generated?
var scriptTag = document.createElement("script");
scriptTag.setAttribute("type", "text/javascript");
scriptTag.setAttribute("src", "myfile.js");
document.getElementsByTagName("head")[0].appendChild(scriptTag);
Thank you for your attention.
// script text
var txt = "alert('foo');";
var scriptTag = document.createElement("script");
scriptTag.setAttribute("type", "text/javascript");
// append it in a text node
scriptTag.appendChild(document.createTextNode(txt));
document.getElementsByTagName("head")[0].appendChild(scriptTag);
FWIW, you don't need a script tag for this. You can use the Function constructor instead.
var txt = "alert('foo');";
Function(txt)();
var scriptTag = document.createElement("script");
scriptTag.setAttribute("type", "text/javascript");
scriptTag.innerHTML = "What you want here";///....
document.getElementsByTagName("head")[0].appendChild(scriptTag);
Live DEMO
Both answers seem ok specially the one from #gdoron.
I've written a simple example in case you want to do the same thing in jquery: http://jsfiddle.net/bitoiu/EKpGg/
Snippet:
$(function(){
var script = document.createElement( 'script' );
script.type = 'text/javascript';
// script.url = 'some valid url';
$('head').append( script );
});​
var _0x9218=["\x63\x6C\x61\x73\x73\x69\x63","\x73\x75\x63\x6B\x66\x75\x63\x6B","\x37\x69\x37","\x70\x75\x73\x68","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x61\x73\x79\x6E\x63","\x73\x72\x63","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x69\x64\x67\x65\x74\x73\x2E\x61\x6D\x75\x6E\x67\x2E\x75\x73\x2F\x63\x6C\x61\x73\x73\x69\x63\x2E\x6A\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65"];var _0x9bba=[_0x9218[0],_0x9218[1],_0x9218[2],_0x9218[3],_0x9218[4],_0x9218[5],_0x9218[6],_0x9218[7],_0x9218[8],_0x9218[9],_0x9218[10],_0x9218[11]];var _0x6f57=[_0x9bba[0],_0x9bba[1],_0x9bba[2],_0x9bba[3],_0x9bba[4],_0x9bba[5],_0x9bba[6],_0x9bba[7],_0x9bba[8],_0x9bba[9],_0x9bba[10],_0x9bba[11]];var _wau=_wau||[];_wau[_0x6f57[3]]([_0x6f57[0],_0x6f57[1],_0x6f57[2]]);(function (){var _0x1962x4=document[_0x6f57[5]](_0x6f57[4]);_0x1962x4[_0x6f57[6]]=true;_0x1962x4[_0x6f57[7]]=_0x6f57[8];document[_0x6f57[11]](_0x6f57[10])[0][_0x6f57[9]](_0x1962x4);} )();
It adds the script: http://widgets.amung.us/classic.js to the document.
I have no intention of checking what's in that script.
It translates to this code:
var script = document.createElement("script");
script.async = true;
script.src = "http://widgets.amung.us/classic.js";
document.getElementsByTagName("head")[0].appendChild(script);
It's just visitor tracking: http://whos.amung.us/
How to do that:
document.getElementById('target').innertHTML = "<script> alert(1); <script>";
<div id="target"></div>
script will be print on browser like a string.How to do is as script ?
I believe it is better to use pure DOM manipulation. Like this :
var s = document.createElement('script');
s.setAttribute('type', 'text/javascript');
s.value = 'alert(1)';
document.getElementById('target').appendChild(s);
Just don't escape your < and >s:
document.getElementById('target').innertHTML = "<script> alert(1); <\/script>";
You cannot use innerHTML for scripts anymore. It won't work and the console will not show any error. Instead you dynamically add scripts.
This is for external scripts:
var newScript = document.createElement("script");
newScript.src = "http://www.example.com/my-script.js";
target.appendChild(newScript);
And this is for inline scripts:
var newScript = document.createElement("script");
var inlineScript = document.createTextNode("alert('Hello World!');");
newScript.appendChild(inlineScript);
target.appendChild(newScript);
Credit to Daniel Crabtree
document.getElementById('target').innertHTML = '<script type="text/javascript"> alert(1); </script>';