<?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>Life["Breathing"] &#187; 瀏覽器</title>
	<atom:link href="http://blog.hsin.tw/tag/%e7%80%8f%e8%a6%bd%e5%99%a8/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.hsin.tw</link>
	<description></description>
	<lastBuildDate>Mon, 07 Jun 2010 07:30:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>gmail不能收含有執行檔的zip檔</title>
		<link>http://blog.hsin.tw/2010/gmail-zip-file-blocked/</link>
		<comments>http://blog.hsin.tw/2010/gmail-zip-file-blocked/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 12:25:06 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[gmail]]></category>
		<category><![CDATA[zip]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=383</guid>
		<description><![CDATA[剛剛使用ASUS的線上客服 要請他寄驅動程式給我 寄了兩次都沒收到 第三次才跟他說我換aol的信箱收 這樣才收到 剛剛找了一下原因 原來Gmail如果寄的zip裡面含有exe檔案(可執行檔) (這是google的說明頁： 某些檔案類型遭到封鎖) 就會自動擋下來 而且還不會跟收件人說= = 害我以為ASUS的客服偷懶也偷太嚴重了吧 錯怪他了XD 所以下次用gmail寄附件為壓縮檔的時候要記得 看是改壓成rar(不過收件者不一定可以解 沒有另外裝軟體的話 windows內建的解不了) 或是zip壓縮兩次(比較麻煩一點) 或是改副檔名成別的 像是txt(也是有點麻煩 還要請收件者再把副檔名改回來) 最後大絕招是放在隨身碟裡再放進信封 丟進郵筒給他 (誤 以上記一下以免下次又遇到]]></description>
			<content:encoded><![CDATA[<p>剛剛使用ASUS的線上客服<br />
<span id="more-383"></span><br />
要請他寄驅動程式給我<br />
寄了兩次都沒收到<br />
第三次才跟他說我換aol的信箱收<br />
這樣才收到</p>
<p>剛剛找了一下原因<br />
原來Gmail如果寄的zip裡面含有exe檔案(可執行檔)<br />
(這是google的說明頁： <a href="http://mail.google.com/support/bin/answer.py?answer=6590" target="_blank">某些檔案類型遭到封鎖</a>)<br />
就會自動擋下來<br />
而且還不會跟收件人說= =<br />
害我以為ASUS的客服偷懶也偷太嚴重了吧<br />
錯怪他了XD</p>
<p>所以下次用gmail寄附件為壓縮檔的時候要記得<br />
看是改壓成rar(不過收件者不一定可以解 沒有另外裝軟體的話 windows內建的解不了)<br />
或是zip壓縮兩次(比較麻煩一點)<br />
或是改副檔名成別的 像是txt(也是有點麻煩 還要請收件者再把副檔名改回來)<br />
最後大絕招是放在隨身碟裡再放進信封 丟進郵筒給他 (誤</p>
<p>以上記一下以免下次又遇到</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2010/gmail-zip-file-blocked/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>我的portable apps</title>
		<link>http://blog.hsin.tw/2010/my-portable-apps/</link>
		<comments>http://blog.hsin.tw/2010/my-portable-apps/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 11:25:17 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[軟體]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=380</guid>
		<description><![CDATA[最近NB要重灌了 想說就把一些軟體放在USB裡 以後就不用灌一次就裝一次了 我用的apps menu是PStart 因為找了很久 可以滑到螢幕邊緣按右鍵才顯示面板的 好像就只有PStart了 其他都是滑過去就顯示或是放在系統列裡什麼的 有時候很不乖的跳出來 會讓我很焦慮XD 所以就是PStart了 雖然他的畫面簡單了點 ok的 下面就是我目前有裝的軟體 不過有些我已經忘了是哪裡找到的 所以可能不是當初我下載的版本 我也不確定到底是不是安全的 我自己是都有用掃木馬軟體掃過一次 擔心的話就也是裝完再掃過一次囉 .hint{color:#c3c3c3;} PSPad 文字編輯器 一直都是用這款 所以第一個就找免安裝版來用 PSPad 4.5.4.2356 免安裝中文版 from 阿榮福利味 當有更新的版本時 標題可能會不一樣 Notepad++ 文字編輯器 當檔案太大的時候 用PSPad開都會很卡很卡 就改用Notepad++來開 會順很多 官網就有免安裝的版本(.zip)可以下載 Notepad++ Firefox 瀏覽器 被制約太深了 所以用別的瀏覽器都不順手 [火狐瀏覽器] Firefox Portable 3.6 阿榮版 (2010.01.28) from 阿榮福利味 當有更新的版本時 標題可能會不一樣 PCMan [...]]]></description>
			<content:encoded><![CDATA[<p>最近NB要重灌了<br />
<span id="more-380"></span><br />
想說就把一些軟體放在USB裡<br />
以後就不用灌一次就裝一次了<br />
我用的apps menu是PStart<br />
因為找了很久 可以滑到螢幕邊緣按右鍵才顯示面板的<br />
好像就只有PStart了<br />
其他都是滑過去就顯示或是放在系統列裡什麼的<br />
有時候很不乖的跳出來 會讓我很焦慮XD<br />
所以就是PStart了 雖然他的畫面簡單了點 ok的</p>
<p>下面就是我目前有裝的軟體<br />
不過有些我已經忘了是哪裡找到的<br />
所以可能不是當初我下載的版本<br />
我也不確定到底是不是安全的<br />
我自己是都有用掃木馬軟體掃過一次<br />
擔心的話就也是裝完再掃過一次囉</p>
<style>.hint{color:#c3c3c3;}</style>
<p><b>PSPad</b><br />
文字編輯器<br />
一直都是用這款 所以第一個就找免安裝版來用<br />
<a href="http://azo-freeware.blogspot.com/2007/11/pspad-4532291.html" target="_blank">PSPad 4.5.4.2356 免安裝中文版</a> from <a href="http://azo-freeware.blogspot.com/" target="_blank">阿榮福利味</a><br />
<span class="hint">當有更新的版本時 標題可能會不一樣</span></p>
<p>
<b>Notepad++</b><br />
文字編輯器<br />
當檔案太大的時候 用PSPad開都會很卡很卡 就改用Notepad++來開 會順很多<br />
官網就有免安裝的版本(.zip)可以下載<br />
<a href="http://notepad-plus.sourceforge.net/tw/site.htm" target="_blank">Notepad++</a></p>
<p>
<b>Firefox</b><br />
瀏覽器<br />
被制約太深了 所以用別的瀏覽器都不順手<br />
<a href="http://azo-freeware.blogspot.com/2006/10/firefox-20.html" target="_blank">[火狐瀏覽器] Firefox Portable 3.6 阿榮版 (2010.01.28)</a> from <a href="http://azo-freeware.blogspot.com/" target="_blank">阿榮福利味</a><br />
<span class="hint">當有更新的版本時 標題可能會不一樣</span></p>
<p>
<b>PCMan</b><br />
BBS軟體<br />
官網就有免安裝的版本(.zip)可以下載<br />
<a href="http://pcman.openfoundry.org/" target="_blank">PCMan</a></p>
<p>
<b>Foobar2000</b><br />
音樂播放軟體<br />
我是裝1.0英文版的<br />
<a href="http://azo-freeware.blogspot.com/2006/10/foobar2000-0941.html" target="_blank">Foobar2000 0.9.6.9 免安裝中文版 (1.0 免安裝英文版)</a> from <a href="http://azo-freeware.blogspot.com/" target="_blank">阿榮福利味</a><br />
<span class="hint">當有更新的版本時 標題可能會不一樣</span></p>
<p>
<b>音樂轉檔精靈</b><br />
音樂轉檔軟體<br />
<a href="http://hola.idv.tw/" target="_blank">紅淚網 HolaNet</a></p>
<p>
<b>PieTTY</b><br />
Telnet/SSH 安全遠端連線程式<br />
<a href="http://www.csie.ntu.edu.tw/~piaip/pietty/" target="_blank">pietty</a></p>
<p>
<b>µTorrent</b><br />
BT下載軟體<br />
<a href="http://azo-freeware.blogspot.com/2006/10/torrent-16474.html" target="_blank">[迷你種子] µTorrent 2.0 .17427 Beta 阿榮版</a> from <a href="http://azo-freeware.blogspot.com/" target="_blank">阿榮福利味</a><br />
<span class="hint">當有更新的版本時 標題可能會不一樣</span></p>
<p>
<b>FileZilla</b><br />
FTP軟體(client端)<br />
<a href="http://portableapps.com/apps/internet/filezilla_portable" target="_blank">FileZilla Portable</a> from <a href="http://portableapps.com/" target="_blank">PortableApps</a></p>
<p>
<b>Taskix</b><br />
windows工具列上的程式按鈕作排序的軟體<br />
2.0的我找不到直接對捷徑設參數的功能 所以我是抓1.5的<br />
<a href="http://blog.hsin.tw/2009/software-taskix-reorder-buttons-in-your-windows-taskbar" target="_blank">我之前寫的介紹</a><br />
<a href="http://taskix.robustit.com/Taskix1.5_32.zip" target="_blank">Taskix 1.5下載連結(32bit)</a> from <a href="http://taskix.robustit.com/">官網</a></p>
<p><b>CDBurnerXP</b><br />
燒錄軟體<br />
<a href="http://azo-freeware.blogspot.com/2007/09/cdburnerxp-40013220.html" target="_blank">CDBurnerXP 4.2.3.1110 免安裝中文版 (4.2.7.1849 中文版)</a> from <a href="http://azo-freeware.blogspot.com/" target="_blank">阿榮福利味</a><br />
<span class="hint">當有更新的版本時 標題可能會不一樣</span></p>
<p>
<b>LevinISO</b><br />
虛擬光碟軟體<br />
是簡體中文的 而且好像沒有在更新了 不過很方便的工具 所以還是拿來用了<br />
<a href="http://www.freegroup.org/2009/06/free-software-leviniso/" target="_blank">LevinISO &#8211; 免費綠色版虛擬光碟，檔案小、無須安裝，支援超過20種映像檔格式！</a> from <a href="http://www.freegroup.org/" target="_blank">免費資源網路社群</a></p>
<p>
<b>LockHunter</b><br />
解除被鎖定的檔案與資料夾軟體<br />
<a href="http://portable.easylife.tw/1827" target="_blank">LockHunter 1.0 beta 3 &#8211; 解除被鎖定的檔案與資料夾</a> from <a href="http://portable.easylife.tw/" target="_blank">綠色工廠 Easylife Blog</a></p>
<p>
<b>靈格斯詞霸</b><br />
翻譯軟體<br />
<a href="http://www.lingoes.cn/zh/translator/download.htm" target="_blank">下載靈格斯詞霸</a></p>
<p>
<b>7-Zip</b><br />
解壓縮軟體<br />
<a href="http://www.inote.tw/2007/07/7-zip-450-beta.html" target="_blank">7-Zip 4.65 / 9.10 Beta 中文免安裝版下載！(內附教學連結)</a> from <a href="http://www.inote.tw/" target="_blank">海芋小站</a></p>
<p>
<b>PhotoCap</b><br />
圖片編輯軟體<br />
<a href="http://tw.myblog.yahoo.com/pp-king/article?mid=10268" target="_blank">PhotoCap 5.0 繁中免安裝版[圖片編修]</a> from <a href="http://tw.myblog.yahoo.com/pp-king" target="_blank">PP熊</a></p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2010/my-portable-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome可以用Greasemonkey囉</title>
		<link>http://blog.hsin.tw/2010/google-chrome-greasemonkey/</link>
		<comments>http://blog.hsin.tw/2010/google-chrome-greasemonkey/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 02:44:41 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=377</guid>
		<description><![CDATA[在Chrome 4.0還是測試版的時候 要用greasemonkey的功能還必須自己加參數才能使用 現在已經正式可以使用啦~ 真是令人雀躍的消息 XD 只要在Userscripts.org裡找到要使用的script 直接按下 install Chrome就會自動將這個script轉換成擴充套件 這樣就可以使用囉 不過目前有15%到25%的script還不能用 但是也夠多了 XD enjoy it~ from: Google Chrome Gets Greasemonkey Support]]></description>
			<content:encoded><![CDATA[<p>在Chrome 4.0還是測試版的時候 要用greasemonkey的功能還必須自己加參數才能使用<br />
<span id="more-377"></span><br />
現在已經正式可以使用啦~<br />
真是令人雀躍的消息 XD<br />
只要在<a href="http://Userscripts.org" target="_blank">Userscripts.org</a>裡找到要使用的script<br />
直接按下 install<br />
Chrome就會自動將這個script轉換成擴充套件<br />
這樣就可以使用囉<br />
不過目前有15%到25%的script還不能用<br />
但是也夠多了 XD<br />
enjoy it~</p>
<p>from: <a href="http://mashable.com/2010/02/01/google-chrome-greasemonkey-2/" target="_blank">Google Chrome Gets Greasemonkey Support</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2010/google-chrome-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在IE中看iframe嵌入不同網域的網頁時 會無法使用cookie的問題</title>
		<link>http://blog.hsin.tw/2010/ie-blocking-iframe-cookie/</link>
		<comments>http://blog.hsin.tw/2010/ie-blocking-iframe-cookie/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 10:33:09 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[瀏覽器]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=374</guid>
		<description><![CDATA[有些問題真的是不遇到就真的不知道會這樣阿~ 這幾天遇到這個問題 iframe如果嵌入了不同網域的網頁 則以IE看這網頁時 會無法使用cookie 應該是某些安全性的問題 但是只有IE會這樣就&#8230;&#8230;&#8230;&#8230;&#8230;&#124;&#124;&#124; 所幸經過咕狗大神的提點之後 在這裡找到了解決的辦法 IE Blocking iFrame Cookies 以php的解決方法來說 只要在每個會嵌入在iframe中的頁面裡加上這行 header('P3P:CP=&#34;IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT&#34;'); 就可以囉 其他還有 ASP.NET、Django、JSP的寫法就去原始頁面看囉]]></description>
			<content:encoded><![CDATA[<p>有些問題真的是不遇到就真的不知道會這樣阿~<br />
<span id="more-374"></span><br />
這幾天遇到這個問題<br />
iframe如果嵌入了不同網域的網頁<br />
則以IE看這網頁時 會無法使用cookie<br />
應該是某些安全性的問題<br />
但是只有IE會這樣就&#8230;&#8230;&#8230;&#8230;&#8230;|||</p>
<p>所幸經過咕狗大神的提點之後<br />
在這裡找到了解決的辦法<br />
<a href="http://adamyoung.net/IE-Blocking-iFrame-Cookies" target="_blank">IE Blocking iFrame Cookies</a></p>
<p>以php的解決方法來說<br />
只要在每個會嵌入在iframe中的頁面裡加上這行</p>
<pre class="brush: php;">
header('P3P:CP=&quot;IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT&quot;');
</pre>
<p>就可以囉</p>
<p>其他還有<br />
ASP.NET、Django、JSP的寫法就去原始頁面看囉</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2010/ie-blocking-iframe-cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox升級到3.5.x時 書籤工具列會縮起來</title>
		<link>http://blog.hsin.tw/2009/firefox3-5-x-bookmarksbarcontent/</link>
		<comments>http://blog.hsin.tw/2009/firefox3-5-x-bookmarksbarcontent/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:36:43 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=363</guid>
		<description><![CDATA[這次家裏電腦的fx升級到3.5 然後又忘記怎麼解決了 所以記一下咕狗到的東西 升級後書籤工具列會縮起來 這是在官方討論區中咕狗到的 解決的方法是 以Stylish擴充套件新增下列樣式(或改userChrome.css檔內容) @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #bookmarksBarContent .bookmark-item {visibility: visible !important;} 這是MozTW討論區的jefm提供的解法 感謝~~~]]></description>
			<content:encoded><![CDATA[<p>這次家裏電腦的fx升級到3.5 然後又忘記怎麼解決了<br />
<span id="more-363"></span><br />
所以記一下咕狗到的東西<br />
<a href="http://forum.moztw.org/viewtopic.php?f=2&#038;t=27252" target="_blank">升級後書籤工具列會縮起來</a><br />
這是在官方討論區中咕狗到的<br />
解決的方法是<br />
以Stylish擴充套件新增下列樣式(或改userChrome.css檔內容)</p>
<pre class="brush: css;">
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
#bookmarksBarContent .bookmark-item
{visibility: visible !important;}
</pre>
<p>這是<a href="http://forum.moztw.org/index.php" target="_blank">MozTW討論區</a>的jefm提供的解法<br />
感謝~~~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2009/firefox3-5-x-bookmarksbarcontent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery in Action Ch.7 筆記</title>
		<link>http://blog.hsin.tw/2009/jquery-in-action-ch-7/</link>
		<comments>http://blog.hsin.tw/2009/jquery-in-action-ch-7/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 12:03:52 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=316</guid>
		<description><![CDATA[ch.7 Extending jQuery with custom plugins .method{background-color:#ffffcc;color:#000000;margin:10px;width:200px;text-align:center;} .title{background-color:#dddddd;color:#000000;margin-top:25px;} .subtitle{background-color:#eeeeee;color:#000000;;margin-top:10px;} 7.1 Why extend? 使用自訂擴充的plugin可以讓程式及設計有一致性 而且建立重複使用的設計有很多優點 繼承進而擴充了jQuery裡原本就存在的功能更是可以讓事情變得更簡單 7.2 The jQuery plugin authoring guidelines 要建立自訂擴充的plugin需要一定的規範及規則 以確保可以與其他plugin甚至是其他js lib正常地運作 Extending jQuery包含了像是Utility functions或是Methods兩種形式 7.2.1 Naming files and functions 為了避免plugin的檔名與原本已經在使用或是其他人建立的檔名重複 這邊提了三點建議 1.以jquery為開頭(可以避免與不是以jQuery為基礎的其他js檔重複) 2.接著可以寫這個plugin的名字 3.最後以.js結尾 以書中的例子來說 如果要寫一個名為Fred的plugin 其檔名可以命名為jquery.fred.js 另一個有用的方法 可以上jQuery收集plugin的地方找找看 如果看到相同的名字就可以避免重複囉 同樣的避免function名字與別人重複到 也是一樣的方法 7.2.2 Beware the $ jQuery('#myitem').show(); 如果是自己在寫jQuery的script時 常常會使用$來代替jQuery的寫法 但是在寫plugin時 則是可以使用jQuery來寫 以避免不確定性(例如同頁面有使用prototype.js)囉 [...]]]></description>
			<content:encoded><![CDATA[<p>ch.7 Extending jQuery with custom plugins<br />
<span id="more-316"></span></p>
<style>
.method{background-color:#ffffcc;color:#000000;margin:10px;width:200px;text-align:center;}
.title{background-color:#dddddd;color:#000000;margin-top:25px;}
.subtitle{background-color:#eeeeee;color:#000000;;margin-top:10px;}
</style>
<div class="title">7.1 Why extend?</div>
<p>使用自訂擴充的plugin可以讓程式及設計有一致性<br />
而且建立重複使用的設計有很多優點<br />
繼承進而擴充了jQuery裡原本就存在的功能更是可以讓事情變得更簡單</p>
<div class="title">7.2 The jQuery plugin authoring guidelines</div>
<p>要建立自訂擴充的plugin需要一定的規範及規則<br />
以確保可以與其他plugin甚至是其他js lib正常地運作<br />
Extending jQuery包含了像是Utility functions或是Methods兩種形式</p>
<div class="subtitle">7.2.1 Naming files and functions</div>
<p>為了避免plugin的檔名與原本已經在使用或是其他人建立的檔名重複<br />
這邊提了三點建議<br />
1.以jquery為開頭(可以避免與不是以jQuery為基礎的其他js檔重複)<br />
2.接著可以寫這個plugin的名字<br />
3.最後以.js結尾<br />
以書中的例子來說<br />
如果要寫一個名為Fred的plugin<br />
其檔名可以命名為<b>jquery.fred.js</b></p>
<p>另一個有用的方法 可以上<a href="http://docs.jquery.com/Plugins">jQuery收集plugin的地方</a>找找看<br />
如果看到相同的名字就可以避免重複囉</p>
<p>同樣的避免function名字與別人重複到<br />
也是一樣的方法</p>
<div class="subtitle">7.2.2 Beware the $</div>
<pre class="brush: jscript;">
jQuery('#myitem').show();
</pre>
<p>如果是自己在寫jQuery的script時<br />
常常會使用$來代替jQuery的寫法<br />
但是在寫plugin時<br />
則是可以使用jQuery來寫<br />
以避免不確定性(例如同頁面有使用prototype.js)囉<br />
或是如前一章6.2所提的</p>
<pre class="brush: jscript;">
(function($){
//
// 在這裡使用$
//
})(jQuery);
</pre>
<p>寫在這裡面時就可以用$囉</p>
<div class="subtitle">7.2.3 Taming complex parameter lists</div>
<p>在使用plugin時可能會需要傳入不同的參數來運用<br />
但是有時只需要用預設值就好了</p>
<pre class="brush: jscript;">
//例如有一個function有7個參數
function complex(p1,p2,p3,p4,p5,p6,p7) {/* ... */}
//
//但有時只需要填入p1或是p7的值來使用
complex(valueA,null,null,null,null,null,valueB);
//
//甚或是這樣
complex(valueA,null,valueC,valueD,null,null,valueB);
</pre>
<p>這樣會造成傳入及讀取參數的複雜度<br />
所以可以使用下面的方法來取代</p>
<pre class="brush: jscript;">
complex(valueA, {
  p3: valueC,
  p4: valueD,
  p7: valueB
});
</pre>
<p>將一定要傳入的參數如同之前一樣的設定置放<br />
而把其他有時候可以省略的參數合併放在一個object中<br />
這樣便不用在意是第幾個參數省略<br />
或是傳入了多少個參數了</p>
<p>在plugin裡要使用參數的時候<br />
可以利用6.3.6講到的$.extend()</p>
<pre class="brush: jscript;">
function complex(p1,options){
  var settings = $.extend({
    option1: defaultValue1,
    option2: defaultValue2,
    option3: defaultValue3,
    option4: defaultValue4,
    option5: defaultValue5,
    option6: defaultValue6
  },options||{});
  //其他script
}
</pre>
<p>因為$.extend()裡排在後面的object會把前面的object中有相同的property值蓋過去<br />
所以如果有填入參數 就會使用填入的參數<br />
不然就是使用預設的參數<br />
而有一點要注意的是<b>||{}</b>這個地方<br />
當完全沒有填入參數時<br />
就都使用plugin中的預設值</p>
<div class="title">7.3 Writing custom utility functions</div>
<pre class="brush: jscript;">
(function($){
//
// 在這裡使用$
//
})(jQuery);
</pre>
<p>就如同7.2.2講的<br />
如果在plugin中有大量使用到jQuery自己本身的method<br />
可以使用上面這樣的方法<br />
就可以在裡面使用$ 而不受到干擾</p>
<div class="subtitle">7.3.1 Creating a data manipulation utility function</div>
<div class="subtitle">7.3.2 Writing a date formatter</div>
<p>這兩小節各別有一個Utility functions類型的自訂擴充練習</p>
<div class="title">7.4 Adding new wrapper methods</div>
<p>要建立wrapper methods是使用<b>$.fn</b><br />
下面是一個簡單的例子</p>
<pre class="brush: jscript;">
(function($){
  $.fn.makeItBlue = function() {
    return this.css('color','blue');
  }
})(jQuery);
</pre>
<p>通常來說 除非是特殊需要<br />
否則return的值仍是該wrapped set<br />
這樣才能繼續在chain中使用這組elements</p>
<div class="subtitle">7.4.1 Applying multiple operations in a wrapper method</div>
<div class="subtitle">7.4.2 Retaining state within a wrapper method</div>
<p>這兩小節各別有一個wrapper method類型的自訂擴充練習</p>
<pre class="brush: jscript;">
(function($){
  //將settings定義在這裡 才能讓其他的methods(如下面的showPhoto)使用到
  var settings;
  //主要的plugin
  $.fn.photomatic = function(callerSettings) {
    //如同7.2.3所講的參數用法一樣
    settings = $.extend({
      photoElement: '#photomaticPhoto',
      lastControl: null
    }, callerSettings || {});
    //plugin所執行的功能
    settings.thumbnails = this.filter('img');
    settings.thumbnails.click(function(){ showPhoto(this.index); });
    //如果有需要 可以給一個初始值
    showPhoto(0);
    //返回同樣的wrapped set
    return this;
  };
  //將重複性的功能另外寫一個method
  var showPhoto = function(index) {
    settings.photoElement
      .attr('src',settings.transformer(settings.thumbnails[index].src));
    settings.current = index;
  };
})(jQuery);
</pre>
<p>在7.4.2中 講解的例子架構大概是上面這樣(有刪掉部份的東西)</p>
<p><!--<br />
-本章小節-<br />
自己寫plugin我還沒嘗試過<br />
下次來踹踹<br />
(有結跟沒結一樣...)<br />
--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2009/jquery-in-action-ch-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery in Action Ch.6 筆記</title>
		<link>http://blog.hsin.tw/2009/jquery-in-action-ch-6/</link>
		<comments>http://blog.hsin.tw/2009/jquery-in-action-ch-6/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 12:11:36 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=304</guid>
		<description><![CDATA[ch.6 jQuery utility functions .method{background-color:#ffffcc;color:#000000;margin:10px;width:200px;text-align:center;} .title{background-color:#dddddd;color:#000000;margin-top:25px;} .subtitle{background-color:#eeeeee;color:#000000;;margin-top:10px;} 這章會介紹除了操作elements外的utility functions 6.1 Using the jQuery flags 這節要介紹三個jQuery flags $.browser $.boxModel $.styleFloat 6.1.1 Detecting the user agent (jQuery1.3已經不建議使用$.browser，而有新增一個新的物件$.support) 檢測使用者所用的瀏覽器 一開始是先介紹使用判斷method的方法 if (element.attachEvent) { element.attachEvent('onclick',someHandler); } else if (element.addEventListener) { element.addEventListener('click',someHandler); } else { throw new Error('event handling not supported'); } 而這個可能發生的問題是 method可以使用 但是裡面帶的參數因為不同的瀏覽器而有不同的意義 所以jQuery提供了一個辨識瀏覽器的方法 $.browser if($.browser.msie){ alert('這是IE瀏覽器'); } [...]]]></description>
			<content:encoded><![CDATA[<p>ch.6 jQuery utility functions<br />
<span id="more-304"></span></p>
<style>
.method{background-color:#ffffcc;color:#000000;margin:10px;width:200px;text-align:center;}
.title{background-color:#dddddd;color:#000000;margin-top:25px;}
.subtitle{background-color:#eeeeee;color:#000000;;margin-top:10px;}
</style>
<p>這章會介紹除了操作elements外的utility functions</p>
<div class="title">6.1 Using the jQuery flags</div>
<p>這節要介紹三個jQuery flags<br />
$.browser<br />
$.boxModel<br />
$.styleFloat</p>
<div class="subtitle">6.1.1 Detecting the user agent</div>
<div style="color:#cc0000;">(jQuery1.3已經不建議使用$.browser，而有新增一個新的物件<a href="http://docs.jquery.com/Utilities/jQuery.support" target="_blank">$.support</a>)</div>
<p>檢測使用者所用的瀏覽器<br />
一開始是先介紹使用判斷method的方法</p>
<pre class="brush: jscript;">
if (element.attachEvent) {
  element.attachEvent('onclick',someHandler);
}
else if (element.addEventListener) {
  element.addEventListener('click',someHandler);
}
else {
  throw new Error('event handling not supported');
}
</pre>
<p>而這個可能發生的問題是 method可以使用<br />
但是裡面帶的參數因為不同的瀏覽器而有不同的意義<br />
所以jQuery提供了一個辨識瀏覽器的方法</p>
<div class="method">$.browser</div>
<pre class="brush: jscript;">
if($.browser.msie){
	alert('這是IE瀏覽器');
}
</pre>
<p>會有下面幾個值<br />
$.browser.msie<br />
$.browser.mozilla<br />
$.browser.safari<br />
$.browser.opera<br />
$.browser.version<br />
前面四個返回的是boolean值<br />
是將瀏覽器歸類到四大類<br />
如果為該類即返回true<br />
其餘會是false<br />
而有些瀏覽器因為版本不同 也可能會有差異 所以$.browser.version是使用的版本</p>
<p>建議是method方法也無法判別了才使用$.browser</p>
<div class="subtitle">6.1.2 Determining the box model</div>
<div style="color:#cc0000;">(jQuery1.3已經不建議使用$.boxModel，而有新增一個新的物件<a href="http://docs.jquery.com/Utilities/jQuery.support" target="_blank">$.support</a>)</div>
<div class="method">$.boxModel</div>
<p>$.boxModel返回一個boolean值<br />
當是使用W3C standard box model時返回true<br />
而使用IE box model(或是說traditional box model)時返回false<br />
這個需要用到的時機<br />
書中提到的是關於width跟height的解釋<br />
使用W3C standard box model時<br />
計算width跟height不會包含padding跟border的pixels<br />
而IE box model則會包含<br />
所以可能會造成elements的大小在不同瀏覽器看起來會不太一樣</p>
<div class="subtitle">6.1.3 Detecting the correct float style to use</div>
<div class="method">$.styleFloat</div>
<p>在不同的瀏覽器對於float有不同的名字<br />
在IE是styleFloat 其他的則是cssFloat<br />
所以使用$.styleFloat就不用擔心這個問題了</p>
<pre class="brush: jscript;">
element.style[$.styleFloat] = 'left';
</pre>
<p>不過通常使用css(&#8216;float&#8217;)就可以了<br />
$.styleFloat主要是給plugins或是extensions製作的人使用</p>
<div class="title">6.2 Using other libraries with jQuery</div>
<div class="method">$.noConflict()</div>
<p>在Ch1有稍微提到<br />
如果在同個頁面上要使用其他的javascript library<br />
可以使用$.noConflict()來避免衝突</p>
<pre class="brush: jscript;">
var $j = jQuery.noConflict();
</pre>
<p>這樣就可以使用$j來代替jQuery或是$了</p>
<p>或是可以使用下面這樣</p>
<pre class="brush: jscript;">
//要注意有帶參數$喔
(function($) { /* function body here */ })(jQuery);
//或是下面這個ready function
jQuery(function($){alert('$ = '+ $);});
</pre>
<p>在裡面就還是可以使用$來操作囉</p>
<div class="title">6.3 Manipulating JavaScript objects and collections</div>
<div class="subtitle">6.3.1 Trimming strings</div>
<div class="method">$.trim(value)</div>
<pre class="brush: jscript;">
$('#someField').val($.trim($('#someField').val()));
</pre>
<p>就像PHP中trim()的函式<br />
將字串前後的空白都消除掉<br />
在表單驗證中很常用到</p>
<div class="subtitle">6.3.2 Iterating through properties and collections</div>
<div class="method">$.each(container,callback)</div>
<p>對一個array或object中的值依序作處理</p>
<pre class="brush: jscript;">
var anArray = ['one','two','three'];
$.each(anArray,function(n,value) {
  //do something here
});
var anObject = {one:1, two:2, three:3};
$.each(anObject,function(name,value) {
  //do something here
});
</pre>
<p>container是要處理的array或是object<br />
callback是作處理的function<br />
這個function會有兩個參數 第一個是index 第二個是value</p>
<div class="subtitle">6.3.3 Filtering arrays</div>
<div class="method">$.grep(array,callback,invert)</div>
<p>以某個條件過濾一個array以生成另一個新的array </p>
<pre class="brush: jscript;">
var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
var newarr = $.grep(arr, function(n, i){
					      return (n &gt; 5);
					    });
//新生成的newarr會是 [9, 8, 6, 9, 7, 8, 6, 9]
</pre>
<p>第一個參數array很明顯的就是要處理的array<br />
第二個參數callback是作處理的function 會有兩個參數 第一個是value 第二個是index<br />
第三個參數invert是個boolean值<br />
如果省略invert或是填寫false時 當callback返回值為true的話 就會將這個值放進新生成的array中<br />
如果invert填入true 則當callback返回值為false才會將這個值放進新生成的array中</p>
<pre class="brush: jscript;">
var bigNumbers = $.grep(originalArray,'a&gt;100');
//這時jQuery會自己建立一個function
function(a,i){return a&gt;100;}
//而a就是value ,i就是index
</pre>
<p>如上所示 callback也可以簡寫為一個string</p>
<div class="subtitle">6.3.4 Translating arrays</div>
<div class="method">$.map(array,callback)</div>
<p>對一個array作處理並生成為一個新array<br />
第一個參數array是要處理的array<br />
第二個參數callback是作處理的function 會有兩個參數 第一個是value 第二個是index</p>
<pre class="brush: jscript;">
//將array中的每個值都+1
var oneBased = $.map([0,1,2,3,4],function(value){return value+1;});
//callback如同$.grep()一樣 也是可以寫成一個string
var oneBased = $.map([0,1,2,3,4],'a+1');
</pre>
<p>而有一點要注意的是<br />
如果callback返回值為null或是undefined<br />
則這個值就不會被放進新array中<br />
所以新的array元素個數是有可能比原本的array少</p>
<pre class="brush: jscript;">
var characters = $.map(
  ['that','other thing'],
  function(value){return value.split('');}
);
//characters會是['t','h','a','t','o','t','h','e','r',' ','t','h','i','n','g']
</pre>
<p>如上所示 另一個可以提的是<br />
如果callback處理值完之後 回傳的是一個array<br />
則會將這些所有回傳的array都和在同一個新的array中</p>
<div class="subtitle">6.3.5 More fun with JavaScript arrays</div>
<div class="method">$.inArray(value,array)</div>
<p>判斷一個array中有沒有某個值</p>
<pre class="brush: jscript;">
var index = $.inArray(2,[1,2,3,4,5]);
//會返回1
</pre>
<p>第一個參數value是要判斷的值<br />
當第二個參數array中遇到第一個值為value的時候 會返回其index<br />
找不到的時候則會返回-1</p>
<div class="method">$.makeArray(object)</div>
<pre class="brush: jscript;">
var images = document.getElementsByTagName(&quot;img&quot;);
//這樣是一個NodeList
</pre>
<p>將一個array-like object(像是一個NodeList)轉換成array</p>
<div class="method">$.unique(array)</div>
<p>將array中相同的值剔除掉</p>
<div class="subtitle">6.3.6 Extending objects</div>
<div class="method">$.extend(target,source1,source2, &#8230; sourceN)</div>
<p>將數個object合併<br />
下面是一個簡單的例子</p>
<pre class="brush: jscript;">
var target =  { a: 1, b: 2, c: 3 };
var source1 = { c: 4, d: 5, e: 6 };
var source2 = { e: 7, f: 8, g: 9 };
$.extend(target,source1,source2);
</pre>
<p>如果沒有返回給一個新的object<br />
則是會合併在第一個參數target<br />
而這個例子中 target會變為{a: 1, b: 2, c: 4, d: 5, e: 7, f: 8, g: 9}<br />
有一點要注意的是<br />
如果objects中有相同的property 則後面的object的會蓋過前面的<br />
(這個例子就是source1的c:4會蓋過target的c:4，source2的e:7會蓋過source1的e:6)</p>
<div class="title">6.4 Dynamically loading scripts</div>
<div class="method">$.getScript(url,callback)</div>
<p>依據條件或是情況下再讀取其他的外部script 而不是在頁面load時就讀取script<br />
第一個參數url是要讀取的script的路徑<br />
第二個參數是讀取script完成後會執行的function</p>
<p><!--[本章小結]<br />
我以前比較少用到utility functions的東西<br />
所以這章講的東西大多都是第一次見到<br />
有些東西看起來<br />
用了應該是可以省很多力氣的~<br />
但是還是要多想多練習才知道哪裡需要用或是用得到--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2009/jquery-in-action-ch-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>造飛機~</title>
		<link>http://blog.hsin.tw/2009/plane/</link>
		<comments>http://blog.hsin.tw/2009/plane/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 10:26:56 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=262</guid>
		<description><![CDATA[不知道有沒有人發現上面有時候會有一隻飛機從右邊往左邊飛過去XD 這是我突然覺得上面標題的地方好像有點空 好像該加些什麼喔 所以想說加台會飛的飛機好了 哈哈 他有一定的機率會出現 所以不是每次都會出現囉 如果不想瞭解運作原理的話 可以直接下載檔案就好~ 這是檔案連結 將plane這個資料夾放在跟網頁同一層的目錄 並在該網頁的&#60;body>&#60;/body>之中的任何地方加上一行 建議是頁面的最後 也就是&#60;/body>的上面一行 &#38;lt;script src=&#38;quot;plane/plane.js&#38;quot; type=&#38;quot;text/javascript&#38;quot;&#38;gt;&#38;lt;/script&#38;gt; 就有飛機飛囉~ (如果網頁有作網址rewrite 就可能要把此js檔的路徑跟js檔中圖檔的路徑改成絕對路徑才會正常動作喔) 有時候會卡卡的 應該就是. . .瀏覽器的關係 用google chrome看會飛很快XD ========分隔線===========分隔線========分隔線============= 以下是有用到的相關原理 一共需要4種東西 首先是要加入load事件 可以參考這個 var oldOnload=window.onload&#124;&#124;function(){}; window.onload=function(){ oldOnload(); //do something } 這樣如果頁面上已經有其他onload的函式 就不會被蓋掉了 再來呢 因為要讓飛機從最右邊開始飛 所以要取得可視螢幕的寬度大小 可以參考這裡 而需要這段程式也是因為IE比較XXX的關係 所以要判斷是不是IE function getSize(){ var myWidth=0; if(typeof(window.innerWidth)=='number'){//Non-IE myWidth=window.innerWidth; }else if(document.documentElement&#38;amp;&#38;amp;(document.documentElement.clientWidth&#124;&#124;document.documentElement.clientHeight)){//IE 6+ [...]]]></description>
			<content:encoded><![CDATA[<p>不知道有沒有人發現上面有時候會有一隻飛機從右邊往左邊飛過去XD<br />
<span id="more-262"></span><br />
這是我突然覺得上面標題的地方好像有點空<br />
好像該加些什麼喔<br />
所以想說加台會飛的飛機好了 哈哈<br />
他有一定的機率會出現 所以不是每次都會出現囉<br />
如果不想瞭解運作原理的話 可以直接下載檔案就好~<br />
這是<a href="http://ex.hsin.tw/files/pack.zip">檔案連結</a><br />
將plane這個資料夾放在跟網頁同一層的目錄<br />
並在該網頁的&lt;body>&lt;/body>之中的任何地方加上一行<br />
建議是頁面的最後 也就是&lt;/body>的上面一行</p>
<pre class="brush: xml;">
&amp;lt;script src=&amp;quot;plane/plane.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
</pre>
<p>就有飛機飛囉~<br />
(如果網頁有作網址rewrite 就可能要把此js檔的路徑跟js檔中圖檔的路徑改成絕對路徑才會正常動作喔)</p>
<p>有時候會卡卡的 應該就是. . .瀏覽器的關係<br />
用google chrome看會飛很快XD</p>
<p>========分隔線===========分隔線========分隔線=============</p>
<p>以下是有用到的相關原理<br />
一共需要4種東西</p>
<p>首先是要加入load事件<br />
可以參考<a href="http://www.jaceju.net/blog/?p=160" target="_blank">這個</a></p>
<pre class="brush: jscript;">
var oldOnload=window.onload||function(){};
window.onload=function(){
oldOnload();
//do something
}
</pre>
<p>這樣如果頁面上已經有其他onload的函式 就不會被蓋掉了</p>
<p>再來呢<br />
因為要讓飛機從最右邊開始飛<br />
所以要取得可視螢幕的寬度大小<br />
可以參考<a href="http://www.howtocreate.co.uk/tutorials/javascript/browserwindow" target="_blank">這裡</a><br />
而需要這段程式也是因為IE比較XXX的關係<br />
所以要判斷是不是IE</p>
<pre class="brush: jscript;">
function getSize(){
  var myWidth=0;
  if(typeof(window.innerWidth)=='number'){//Non-IE
    myWidth=window.innerWidth;
  }else if(document.documentElement&amp;amp;&amp;amp;(document.documentElement.clientWidth||document.documentElement.clientHeight)){//IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
  }else if(document.body&amp;amp;&amp;amp;(document.body.clientWidth||document.body.clientHeight)){//IE 4 compatible
    myWidth = document.body.clientWidth;
  }
  return myWidth;
}
</pre>
<p>第三點呢<br />
則是只有當圖片是png才需要的<br />
因為IE6之前的瀏覽器 不支援透明的png圖片(會顯示一塊灰色的)<br />
所以如果當圖片是png的時候<br />
需要用到一點css hack<br />
下面是函式中的片段</p>
<pre class="brush: jscript;">
var img_src=&amp;quot;plane/plane.png&amp;quot;;
var img2_src=&amp;quot;plane/transparent.gif&amp;quot;;
var img_w=45;
var img_h=45;
var img=document.createElement(&amp;quot;img&amp;quot;);
if(navigator.appName==&amp;quot;Microsoft Internet Explorer&amp;quot;){
	img.src=img2_src;
	img.width=img_w;
	img.height=img_h;
	img.style.filter=&amp;quot;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&amp;quot;+img_src+&amp;quot;, sizingmethod=scale);&amp;quot;;
}
else{
	img.src=img_src;
}
</pre>
<p>如果為IE的話 則是先將原本的圖片替換成一張透明的圖片<br />
並設定這張透明的圖片寬度高度 使寬高跟原本的圖片一樣<br />
再加上IE特有的filter<br />
便完成了</p>
<p>最後一點就是讓飛機動起來～<br />
先將這個&lt;img>的position設定為absolute<br />
並設定好top跟left<br />
再利用setTimeout()改變他的left<br />
結果就會很像在動囉~</p>
<p>如果要看完整的js檔 可以在該下載檔案裡面看到喔</p>
<p>這個例子沒有用到javascript library(如jQuery)<br />
所以碼不是太簡潔<br />
如果利用jQuery的話 會更簡單<br />
下次再試試看XD</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2009/plane/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>書籤小工具網頁簡轉繁、繁轉簡</title>
		<link>http://blog.hsin.tw/2009/bookmarklet-chinese-translate/</link>
		<comments>http://blog.hsin.tw/2009/bookmarklet-chinese-translate/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 14:31:29 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=256</guid>
		<description><![CDATA[在重灌狂人那邊看到的 這個真是好耶～ firefox就不用裝新同文堂了 而且其他瀏覽器也都可以用 詳情就去免裝軟體，「新同文堂」網頁繁、簡中文轉換按鈕！（書籤小工具）看吧~ =update= 剛剛看了一下內容 bookmarlet是引入一個js檔 而這個js檔是搜尋頁面所有的元素 然後將找到的簡體中文都換成繁體的 可以找得到並轉換的字大概是2500多個中文字 會無腦的硬轉 而且沒有像Fx的新同文堂addon一樣有詞彙辨識 (例如：皇后->皇後) 所以如果比較介意或是謹慎的人就還是用addon囉 我是沒差 哈哈哈 用這個就好！]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://briian.com" target="_blank">重灌狂人</a>那邊看到的<br />
<span id="more-256"></span><br />
這個真是好耶～<br />
firefox就不用裝新同文堂了<br />
而且其他瀏覽器也都可以用<br />
詳情就去<a target="_blank" href="http://briian.com/?p=6312">免裝軟體，「新同文堂」網頁繁、簡中文轉換按鈕！（書籤小工具）</a>看吧~</p>
<p>=update=<br />
剛剛看了一下內容<br />
bookmarlet是引入一個js檔<br />
而這個js檔是搜尋頁面所有的元素<br />
然後將找到的簡體中文都換成繁體的<br />
可以找得到並轉換的字大概是2500多個中文字<br />
會<del datetime="2009-06-06T01:48:49+00:00">無腦的</del>硬轉<br />
而且沒有像Fx的新同文堂addon一樣有詞彙辨識<br />
(例如：皇后->皇後)<br />
所以如果比較介意或是謹慎的人就還是用addon囉<br />
我是沒差 哈哈哈 用這個就好！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2009/bookmarklet-chinese-translate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript 隱藏IE左下角的錯誤提示</title>
		<link>http://blog.hsin.tw/2009/javascript-ignore-ie-error/</link>
		<comments>http://blog.hsin.tw/2009/javascript-ignore-ie-error/#comments</comments>
		<pubDate>Tue, 12 May 2009 12:03:25 +0000</pubDate>
		<dc:creator>hsin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[瀏覽器]]></category>

		<guid isPermaLink="false">http://blog.hsin.tw/?p=228</guid>
		<description><![CDATA[有錯誤的時候 最好的辦法當然就是把這個錯誤找出來並更正他 但是有時候會有特殊情況不更正這個錯誤或是不知道怎麼更正 至於是什麼時候.. . 你看到這篇的時候我想應該就是有需要的時候XD 只要加上一行就可以隱藏左下角的錯誤了 window.onerror=function(){return true;}; 歐蜜頭佛 有錯誤還是儘快更正才是阿~施主~]]></description>
			<content:encoded><![CDATA[<p>有錯誤的時候<br />
<span id="more-228"></span><br />
最好的辦法當然就是把這個錯誤找出來並更正他<br />
但是有時候會有特殊情況不更正這個錯誤<del datetime="2009-05-11T09:55:37+00:00">或是不知道怎麼更正</del><br />
至於是什麼時候.. .<br />
你看到這篇的時候我想應該就是有需要的時候XD<br />
只要加上一行就可以隱藏左下角的錯誤了</p>
<pre class="brush: jscript;">
window.onerror=function(){return true;};
</pre>
<p>歐蜜頭佛<br />
有錯誤還是儘快更正才是阿~施主~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hsin.tw/2009/javascript-ignore-ie-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
