<?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>HAPPY TOTORO &#187; Firefox</title>
	<atom:link href="http://fxiao.com/tag/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://fxiao.com</link>
	<description>龙 猫 要 努 力 ！</description>
	<lastBuildDate>Thu, 05 Nov 2009 13:58:35 +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>解决站外链接代码的一个bug</title>
		<link>http://fxiao.com/2007/11/external-link-code-to-solve-a-bug/</link>
		<comments>http://fxiao.com/2007/11/external-link-code-to-solve-a-bug/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 10:25:17 +0000</pubDate>
		<dc:creator>XIAO Feng</dc:creator>
				<category><![CDATA[资讯·软件]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[网页]]></category>

		<guid isPermaLink="false">http://totoro.yo2.cn/archives/508678</guid>
		<description><![CDATA[白鸽在将幻想变为现实——让所有外部链接在新窗口打开一文中介绍了一段Javascript代码，用于在网页中出现外部链接的情况下，当浏览者点击链接时使浏览器自动在新窗口或新标签页打开目的窗口。这段代码使得写文章的时候不用再为每个可能出现的链接写一段窗口属性代码，极大的提高了效率。但是在使用过程中有一个小问题，比如本站右侧的“存档”，点击旁边的“展开收缩”链接，本来应该是在本窗口向下延伸出一段文本，但是应用了“外部链接”代码后，因为程序检测到了那个链接地址不是以“http://totoror.com”开头，所以就自动在新窗口打开了，结果在新窗口自然什么也看不到。为些对这段代码作了点小小的改动。改动结果如下：
<span class="readmore"><a href="http://fxiao.com/2007/11/external-link-code-to-solve-a-bug/" title="解决站外链接代码的一个bug">阅读全文(共1152字)</a></span>]]></description>
			<content:encoded><![CDATA[<p>白鸽在<a href="http://rexp.cn/archives/506397">将幻想变为现实——让所有外部链接在新窗口打开</a>一文中介绍了一段Javascript代码，用于在网页中出现外部链接的情况下，当浏览者点击链接时使浏览器自动在新窗口或新标签页打开目的窗口。这段代码使得写文章的时候不用再为每个可能出现的链接写一段窗口属性代码，极大的提高了效率。但是在使用过程中有一个小问题，比如本站右侧的“存档”，点击旁边的“展开收缩”链接，本来应该是在本窗口向下延伸出一段文本，但是应用了“外部链接”代码后，因为程序检测到了那个链接地址不是以“http://totoror.com”开头，所以就自动在新窗口打开了，结果在新窗口自然什么也看不到。为些对这段代码作了点小小的改动。改动结果如下：</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum"> 1: </span>&lt;script type=<span class="str">"text/javascript"</span>&gt;</pre>
<pre><span class="lnum"> 2: </span>&lt;!--</pre>
<pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">function</span> setExternalLinkTarget()</pre>
<pre><span class="lnum"> 4: </span>{</pre>
<pre class="alt"><span class="lnum"> 5: </span> <span class="rem">// 从当前 url 中解析主机名 </span></pre>
<pre><span class="lnum"> 6: </span> <span class="kwrd">var</span> locationMatch = document.location.href.match(/^(http://)?([^/]+)/i);</pre>
<pre class="alt"><span class="lnum"> 7: </span> <span class="rem">// 设置站点链接 </span></pre>
<pre><span class="lnum"> 8: </span> <span class="kwrd">var</span> siteUrl = locationMatch[2];</pre>
<pre class="alt"><span class="lnum"> 9: </span> <span class="rem">// 获取页面上所有链接 </span></pre>
<pre><span class="lnum"> 10: </span> <span class="kwrd">var</span> allLinks = document.getElementsByTagName(<span class="str">'a'</span>);</pre>
<pre class="alt"><span class="lnum"> 11: </span> <span class="kwrd">var</span> len = allLinks.length;</pre>
<pre><span class="lnum"> 12: </span> <span class="kwrd">if</span>(len &gt; 0)</pre>
<pre class="alt"><span class="lnum"> 13: </span> {</pre>
<pre><span class="lnum"> 14: </span> <span class="kwrd">var</span> externalLink;</pre>
<pre class="alt"><span class="lnum"> 15: </span> <span class="kwrd">for</span>(i=0; i&lt;len; i++)</pre>
<pre><span class="lnum"> 16: </span> {</pre>
<pre class="alt"><span class="lnum"> 17: </span> <span class="rem">// 设置当前链接 </span></pre>
<pre><span class="lnum"> 18: </span> externalLink = allLinks[i];</pre>
<pre class="alt"><span class="lnum"> 19: </span> <span class="rem">//检查是否存在非标准http链接（javascript链接就是属于此类）</span></pre>
<pre><span class="lnum"> 20: </span> <span class="kwrd">if</span>(externalLink.href.indexOf(<span class="str">"http"</span>)==-1)</pre>
<pre class="alt"><span class="lnum"> 21: </span> {</pre>
<pre><span class="lnum"> 22: </span> <span class="rem">//do nothing;</span></pre>
<pre class="alt"><span class="lnum"> 23: </span> }</pre>
<pre><span class="lnum"> 24: </span> <span class="rem">// 如果链接 href 里面发现站点链接（外部链接） </span></pre>
<pre class="alt"><span class="lnum"> 25: </span> <span class="kwrd">else</span> <span class="kwrd">if</span> (externalLink.href.indexOf(siteUrl) == -1)</pre>
<pre><span class="lnum"> 26: </span> {</pre>
<pre class="alt"><span class="lnum"> 27: </span> <span class="rem">// 设置 target 属性 </span></pre>
<pre><span class="lnum"> 28: </span> externalLink.setAttribute(<span class="str">'target'</span>, <span class="str">'_blank'</span>);</pre>
<pre class="alt"><span class="lnum"> 29: </span> }</pre>
<pre><span class="lnum"> 30: </span> }</pre>
<pre class="alt"><span class="lnum"> 31: </span> }</pre>
<pre><span class="lnum"> 32: </span>}</pre>
<pre class="alt"><span class="lnum"> 33: </span>window.onload = <span class="kwrd">function</span>() {</pre>
<pre><span class="lnum"> 34: </span> setExternalLinkTarget();</pre>
<pre class="alt"><span class="lnum"> 35: </span>}</pre>
<pre><span class="lnum"> 36: </span><span class="rem">//--&gt; </span></pre>
<pre class="alt"><span class="lnum"> 37: </span>&lt;/script&gt;</pre>
</div>
<p><!--  .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>其中19到25行之间的内容是添加的新内容，其余不变。经测试，结果良好。</p>
<p>ps，以上描述的新窗口代码对IE有效，在<a href="http://fxiao.com/tag/firefox/" class="st_tag internal_tag" rel="tag" title="标签 Firefox 下的日志">Firefox</a>下需设置Tab属性。不过对于使用<a href="http://fxiao.com/tag/firefox/" class="st_tag internal_tag" rel="tag" title="标签 Firefox 下的日志">Firefox</a>的用户来说，是否在新窗口打开完全可以由浏览用户自己决定:)</p>
]]></content:encoded>
			<wfw:commentRss>http://fxiao.com/2007/11/external-link-code-to-solve-a-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
