<?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>西红柿爱番茄 &#187; script</title>
	<atom:link href="http://www.ilovejs.net/archives/tag/script/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ilovejs.net</link>
	<description>到了创造为主的阶段，不忘继续学习</description>
	<lastBuildDate>Thu, 15 Dec 2011 06:18:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>带src链接和执行文本的script</title>
		<link>http://www.ilovejs.net/archives/119</link>
		<comments>http://www.ilovejs.net/archives/119#comments</comments>
		<pubDate>Sat, 02 Jan 2010 10:33:58 +0000</pubDate>
		<dc:creator>Supersha</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.ilovejs.net/?p=119</guid>
		<description><![CDATA[不知道怎么去命名这种用法，所以标题干脆就那样写了，不过这种方式也不是新鲜事了，只是想到了它的另外一些作用，所以YY一下。先看HTML和JS代码样式： [html] &#60;!DOCTYPE HTML&#62; &#60;html&#62; &#60;head&#62; &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34;&#62; &#60;title&#62;Untitled Document&#60;/title&#62; &#60;style type=&#34;text/css&#34;&#62; #div { border: 1px solid #ccc; &#8230; <a href="http://www.ilovejs.net/archives/119" class="more-link">了解更多</a>]]></description>
			<content:encoded><![CDATA[<p>不知道怎么去命名这种用法，所以标题干脆就那样写了，不过这种方式也不是新鲜事了，只是想到了它的另外一些作用，所以YY一下。先看HTML和JS代码样式：<br />
[html]<br />
&lt;!DOCTYPE HTML&gt;<br />
&lt;html&gt;<br />
    &lt;head&gt;<br />
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;<br />
        &lt;title&gt;Untitled Document&lt;/title&gt;<br />
        &lt;style type=&quot;text/css&quot;&gt;<br />
            #div {<br />
                border: 1px solid #ccc;<br />
            }<br />
        &lt;/style&gt;<br />
    &lt;/head&gt;<br />
    &lt;body&gt;<br />
        &lt;div id=&quot;div&quot;&gt;<br />
            Test Test Test Test Test Test Test<br />
        &lt;/div&gt;<br />
	    &lt;!&#8211; It is the point:既带src联入js文件，又带有执行代码  &#8211;&gt;<br />
        &lt;script id=&quot;load&quot; type=&quot;text/javascript&quot; src=&quot;test.js&quot;&gt;<br />
        	alert(MYAPP.util.Dom.getHTMLText(document.getElementById(&quot;div&quot;)));<br />
        &lt;/script&gt;<br />
    &lt;/body&gt;<br />
&lt;/html&gt;<br />
[/html]<br />
[javascript]<br />
var MYAPP = {};<br />
MYAPP.namespace = function(s){<br />
    var names = s &amp;&amp; typeof s.split === &quot;function&quot; ? s.split(&quot;.&quot;) : [];<br />
    var current = MYAPP;<br />
    for (var i = 0, l = names.length; i &lt; l; i++) {<br />
        if (!current[names[i]]) {<br />
            current[names[i]] = {};<br />
        }<br />
        current = current[names[i]];<br />
    }<br />
};</p>
<p>MYAPP.namespace(&quot;util.Dom&quot;);<br />
var D = MYAPP.util.Dom;<br />
D.getHTMLText = function(el){<br />
    return el.innerHTML;<br />
}</p>
<p>//执行指定的script标签内的内容<br />
eval(document.getElementById(&quot;load&quot;).innerHTML);<br />
[/javascript]</p>
<p>
上面的这种eval代码的方式获取不是很且当，我也这么觉得。所以我就在test.js文件里加入了一个37K大小的javascript库来测试（<a href="http://www.ilovejs.net/lab/js.html">测试页面</a>，大家可以使用各自的浏览器测试一番，我是测试没问题的），这有一个非常好的用处是：<strong>减少了一个HTTP Request请求！！</strong>确实是这样的，如果按照常规的话，则需要两个script标签来写上面的结构了。</p>
<p>刚开始的时候，我也是按照下面比较符合常规的思路来编写test.js代码的：<br />
[javascript]<br />
var MYAPP = {};<br />
MYAPP.namespace = function(s){<br />
    var names = s &amp;&amp; typeof s.split === &quot;function&quot; ? s.split(&quot;.&quot;) : [];<br />
    var current = MYAPP;<br />
    for (var i = 0, l = names.length; i &lt; l; i++) {<br />
        if (!current[names[i]]) {<br />
            current[names[i]] = {};<br />
        }<br />
        current = current[names[i]];<br />
    }<br />
};</p>
<p>MYAPP.namespace(&quot;util.Dom&quot;);<br />
var D = MYAPP.util.Dom;<br />
D.getHTMLText = function(el){<br />
    return el.innerHTML;<br />
}</p>
<p>//常规方式：<br />
var script=document.getElementById(&quot;load&quot;);<br />
if(script.onreadystatechange){<br />
	script.onreadystatechange=function(){<br />
		if(script.readyState === &quot;loaded&quot; || script.readyState === &quot;complete&quot;){<br />
			eval(script.innerHTML);<br />
		}<br />
	}<br />
}else{<br />
	script.onload=function(){<br />
		eval(this.innerHTML);<br />
	}<br />
}<br />
[/javascript]<br />
上面的代码在FF，GC，Safari没问题，可是在IE以及Opera（因为Opera对两种判断是否load的方式都支持）下就失效了，调试了一下午的代码也都没有检查出原因，如果有知道方法和原因的，还希望不吝赐教！！（<a href="http://www.ilovejs.net/lab/js2.html">常规方式测试页面</a>）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilovejs.net/archives/119/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

