<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>scriptNode &#187; css</title>
	<atom:link href="http://scriptnode.com/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://scriptnode.com</link>
	<description>Tips and tricks for web developers.</description>
	<lastBuildDate>Tue, 01 Sep 2009 18:46:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dynamically Load CSS and JS Files</title>
		<link>http://scriptnode.com/article/dynamically-load-css-and-js-files/</link>
		<comments>http://scriptnode.com/article/dynamically-load-css-and-js-files/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 08:04:29 +0000</pubDate>
		<dc:creator>Matt Hackett</dc:creator>
				<category><![CDATA[Novice]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[script-sunday]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://scriptnode.com/?p=183</guid>
		<description><![CDATA[
I hear a lot of developers asking about loading
CSS and JS files dynamically.
Surprisingly, creating script and link nodes is just like creating any other nodes.
All you have to do is create them using DOM methods and append to the head:

The Script

var loadCSS = function(file) {
	var link = document.createElement(&#8217;link&#8217;);
	link.href = file;
	link.rel = &#8217;stylesheet&#8217;;
	link.type = &#8216;text/css&#8217;;
	document.getElementsByTagName(&#8217;head&#8217;)[0].appendChild(link);
};
var loadJS [...]]]></description>
			<content:encoded><![CDATA[<p>
I hear a lot of developers asking about loading<br />
<a href="/tag/css/" title="Cascading Style Sheets">CSS</a> and <a href="/tag/javascript/" title="JavaScript">JS</a> files dynamically.<br />
Surprisingly, creating <code>script</code> and <code>link</code> nodes is just like creating any other nodes.<br />
All you have to do is create them using <a href="http://www.w3.org/DOM/" title="Document Object Model">DOM</a> methods and append to the <code>head</code>:
</p>
<h3>The Script</h3>
<p><textarea class="javascript" cols="50" name="code" rows="10"><br />
var loadCSS = function(file) {<br />
	var link = document.createElement(&#8217;link&#8217;);<br />
	link.href = file;<br />
	link.rel = &#8217;stylesheet&#8217;;<br />
	link.type = &#8216;text/css&#8217;;<br />
	document.getElementsByTagName(&#8217;head&#8217;)[0].appendChild(link);<br />
};</p>
<p>var loadJS = function(file) {<br />
	var script = document.createElement(&#8217;script&#8217;);<br />
	script.src = file;<br />
	script.type = &#8216;text/javascript&#8217;;<br />
	document.getElementsByTagName(&#8217;head&#8217;)[0].appendChild(script);<br />
};<br />
</textarea></p>
<h3>Example 1 &#8211; JavaScript</h3>
<p>
First let&#8217;s load up a JavaScript file. Here&#8217;s what the <a href="/assets/misc/dynamic-load/example-1.js">external JS file</a> looks like:
</p>
<p><textarea class="javascript" cols="50" name="code" rows="10"><br />
alert(&#8217;Loaded!&#8217;);<br />
</textarea></p>
<p>
And by using the above script, loading it is easy:
</p>
<p><textarea class="javascript" cols="50" name="code" rows="10"><br />
loadJS(&#8217;/assets/misc/dynamic-load/example-1.js&#8217;);<br />
</textarea></p>
<p>
<button id="example-dynamic-load-1">Load JS file</button>
</p>
<h3>Example 2 &#8211; CSS</h3>
<p>
Loading CSS is not much different. Here are the contents of the <a href="/assets/misc/dynamic-load/example-2.css">external CSS file</a>:
</p>
<p><textarea class="css" cols="50" name="code" rows="10"><br />
body {<br />
	border: 3px solid red;<br />
}<br />
</textarea></p>
<p>
Note that you can also use relative <acronym title="Uniform Resource Locators">URLs</acronym> or even files on another server:
</p>
<p><textarea class="javascript" cols="50" name="code" rows="10"><br />
loadCSS(&#8217;http://scriptnode.com/assets/misc/dynamic-load/example-2.css&#8217;);<br />
</textarea></p>
<p>
<button id="example-dynamic-load-2">Load CSS file</button>
</p>
<p>
This has been tested and works in all of the <a href="http://developer.yahoo.com/yui/articles/gbs/">standard browsers</a> including<br />
Firefox, Chrome, Internet Explorer, Opera and Safari.
</p>
<p><script type="text/javascript">
<!--//</p>
<p>var loadCSS = function(file) {
	var link = document.createElement('link');
	link.href = file;
	link.rel = 'stylesheet';
	link.type = 'text/css';
	document.getElementsByTagName('head')[0].appendChild(link);
};</p>
<p>var loadJS = function(file) {
	var script = document.createElement('script');
	script.src = file;
	script.type = 'text/javascript';
	document.getElementsByTagName('head')[0].appendChild(script);
};</p>
<p>YAHOO.util.Event.addListener('example-dynamic-load-1', 'click', function() {
	loadJS('/assets/misc/dynamic-load/example-1.js');
});</p>
<p>YAHOO.util.Event.addListener('example-dynamic-load-2', 'click', function() {
	loadCSS('http://scriptnode.com/assets/misc/dynamic-load/example-2.css');
});</p>
<p>//-->
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://scriptnode.com/article/dynamically-load-css-and-js-files/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
