Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to append a line of JavaScript (rather than an exteral .js file)?

I want to append a script tag which executes one line of JavaScript to the head of a document, rather than appending a script tag which is empty and uses the src attribute.

Here's what I've got so far:

<script type="text/javascript">
var scriptContents = 'alert("hi")';
var theScript = document.createElement('script');
theScript.type = 'text/javascript';
theScript.appendChild(scriptContents);
document.getElementsByTagName('head')[0].appendChild(theScript);
</script>

It's the appendChild(scriptContents) part that I'm having trouble with. How do I change this to get the alert to appear in the browser?

like image 931
KatieK Avatar asked Jan 26 '26 11:01

KatieK


2 Answers

You need to append it as a text node. Try this:

theScript.appendChild(document.createTextNode(scriptContents));
like image 182
casablanca Avatar answered Jan 28 '26 01:01

casablanca


You can't do

theScript.appendChild(scriptContents);

as appendChild() only appends nodes, it can't append text. You need to make a text node with:

var scriptContents=document.createTextNode('alert("hi");')

However, as Jake mentioned above, you probably just want to do:

eval('alert("hi")');
like image 31
lucideer Avatar answered Jan 27 '26 23:01

lucideer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!