<?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; Greasemonkey</title>
	<atom:link href="http://blog.djh5e.org/archives/tag/greasemonkey/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.djh5e.org</link>
	<description>唬人的世界, 不唬人的自我</description>
	<lastBuildDate>Fri, 21 Aug 2009 05:32:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>我要看圖! VIL Filter How-to</title>
		<link>http://blog.djh5e.org/archives/147</link>
		<comments>http://blog.djh5e.org/archives/147#comments</comments>
		<pubDate>Fri, 25 Apr 2008 15:42:06 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=147</guid>
		<description><![CDATA[這篇來寫一下如何為相片網站設定 filter. Filter 要做的事如下: 找出相簿裡所有的小圖URL 利用小圖URL找出大圖URL 回傳所有的大圖URL資訊. 再來介紹一下 filter function 回傳的結果定義. VIL 支援的回傳結果種類如下: String array, 每個 Element 就是圖片的URL. Object array, 每個 Element 是一個包含圖片相關資訊的 Object. 這個 Object 可包含以下 property: src: 圖片的 URL, required. desc: 圖片的說明文字, optional thumb: 縮圖的 URL, optional. link: 圖片在相簿中的連結, optional. 以上這些 properties 只有 src 是必要的, 其它的 property 如果不存在, 則會自動代換成 src. 接下來我們以無名相簿為例來說明怎麼樣寫 Filter Function. [...]]]></description>
			<content:encoded><![CDATA[<p>這篇來寫一下如何為相片網站設定 filter. Filter 要做的事如下:</p>

<ol>
<li>找出相簿裡所有的小圖URL</li>
<li>利用小圖URL找出大圖URL</li>
<li>回傳所有的大圖URL資訊.</li>
</ol>

<p>再來介紹一下 filter function 回傳的結果定義. VIL 支援的回傳結果種類如下:</p>

<ol>
<li>String array, 每個 Element 就是圖片的URL.</li>
<li>Object array, 每個 Element 是一個包含圖片相關資訊的 Object. 這個 Object 可包含以下 property:</li>
</ol>

<ul>
<li>src: 圖片的 URL, required.</li>
<li>desc: 圖片的說明文字, optional</li>
<li>thumb: 縮圖的 URL, optional.</li>
<li>link: 圖片在相簿中的連結, optional.</li>
</ul>

<p>以上這些 properties 只有 src 是必要的, 其它的 property 如果不存在, 則會自動代換成 src.</p>

<p><span id="more-147"></span></p>

<p>接下來我們以無名相簿為例來說明怎麼樣寫 Filter Function. 先隨便打開一本無名的熱門相簿來參考. 在網頁上要秀圖片, 最常用的方法就是用 &lt;img&gt; tag. 所以我們可以用以下方法抓出頁面上所有的小圖:</p>

<pre>
function(){
  var images = document.getElementsByTagName("img");
}
</pre>

<p>這樣 images 陣列中就是頁面上所有的 &lt;img&gt; 了. 因此, 用以下迴圈就可以找出所有的小圖URL了.</p>

<pre>
function(){
  var images = document.getElementsByTagName("img");
  for(var i = 0; i < images.length; i++){
     var imgurl = images[i].src;
  }
}
</pre>

<p>接下來進行第二步, 來看看大圖和小圖片URL有沒有什麼關聯性. 如果你有 <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> 可以直接用它來觀察:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193201249970080786"><img src="http://lh3.ggpht.com/horance/SBH1BaeUzBI/AAAAAAAAAZc/oapQeiSTA9E/s400/filter_01.jpg" /></a>
</div>

<p>不然, 用 DOM Inspector也不錯:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193201262854982690"><img src="http://lh6.ggpht.com/horance/SBH1CKeUzCI/AAAAAAAAAZk/82Kd8a3dNyQ/s400/filter_02.jpg" /></a>
</div>

<p>再不然直接 "檢視原始碼" 也可以 :</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193201271444917298"><img src="http://lh4.ggpht.com/horance/SBH1CqeUzDI/AAAAAAAAAZs/5jZb94lg-q4/s400/filter_03.jpg" /></a>
</div>

<p>接下來就是找出大圖的URL:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193202130438376514"><img src="http://lh4.ggpht.com/horance/SBH10qeUzEI/AAAAAAAAAaM/AA-_hnXGBfg/s400/filter_04.jpg" /></a>
</div>

<p>比對一下:</p>

</pre><pre>
小圖: http://f4.wretch.yimg.com/bunny1010/9/<span style="color:red;">thumbs/t</span>1344171903.jpg
大圖: http://f4.wretch.yimg.com/bunny1010/9/1344171903.jpg
</pre>

<p>這樣很明顯了吧? 所以我們再把圖片URL處理一下:</p>

<pre>
function(){
   var images = document.getElementsByTagName("img");
   for(var i = 0; i < images.length; i++){
       var imgurl = images[i].src.replace(/thumb\/t/,'');
   }
}
</pre>

<p>這樣就是所有的大圖URL了. 再來把所有大圖路徑存入 Array 之後回傳即可.</p>

</pre><pre>
function(){
  var images = document.getElementsByTagName("img");
  var myurls = new Array();
  for(var i = 0; i < images.length; i++){
     var imgurl = images[i].src.replace(/thumb\/t/,'');
     myurls.push(imgurl);
  }
  return myurls;
}
</pre>

<p>如此就完成最基本的 filter 了. 當然功能是很陽春的, 不過已經足夠讓 VIL 顯示圖片了. 對進階功能有興趣的朋友可以參考 <a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">VIL wiki</a> 上完整版的  filter for wretch. 如果有了什麼成果, 也歡迎跟我聯絡分享喔!</p>
</pre>]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/147/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to add &#8220;Auto-Update&#8221; function to Userscript</title>
		<link>http://blog.djh5e.org/archives/144</link>
		<comments>http://blog.djh5e.org/archives/144#comments</comments>
		<pubDate>Sat, 19 Apr 2008 08:14:28 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=144</guid>
		<description><![CDATA[這篇主要來說明一下, VIL 的 Auto-Update 是怎麼實作的. 要實作Userscript 的 Auto-Update 功能, 要解決的問題有以下兩個: 如何比較遠端版本和已安裝的版本? 如何下載並更新本機的Userscript? 首先來看第一個問題. 在 greasemonkey userscript 中, 要取得遠端網站上的資訊可以透過 GM_xmlhttpRequest 來進行, 因此只要遠端的 server 可以提供版本資訊, 或者 Last-Modified, 我們便可以拿來做為判斷依據. 不過以 Last-Modified 來判斷, 比較容易產生誤差. 所幸 VIL 目前是放在 Opensvn上, 而 SVN 會在 HTTP Response Header 的 ETag 中包含 SVN revision number: ---response begin--- HTTP/1.1 200 OK Date: Sat, 19 Apr [...]]]></description>
			<content:encoded><![CDATA[<p>這篇主要來說明一下, VIL 的 Auto-Update 是怎麼實作的. 要實作Userscript 的 Auto-Update 功能, 要解決的問題有以下兩個:</p>

<ol>
<li>如何比較遠端版本和已安裝的版本?</li>
<li>如何下載並更新本機的Userscript?</li>
</ol>

<p><span id="more-144"></span></p>

<p>首先來看第一個問題. 在 <a href="http://diveintogreasemonkey.org/">greasemonkey</a> userscript 中, 要取得遠端網站上的資訊可以透過 <a href="http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html">GM_xmlhttpRequest</a> 來進行, 因此只要遠端的 server 可以提供版本資訊, 或者 Last-Modified, 我們便可以拿來做為判斷依據. 不過以 Last-Modified 來判斷, 比較容易產生誤差. 所幸 VIL 目前是放在 <a href="http://opensvn.csie.org/">Opensvn</a>上, 而 SVN 會在 HTTP Response Header 的 ETag 中包含 SVN revision number:</p>

<pre>
---response begin---
HTTP/1.1 200 OK
Date: Sat, 19 Apr 2008 06:24:47 GMT
Server: Apache
Last-Modified: Sat, 19 Apr 2008 05:38:26 GMT
<span style="color:blue">ETag: "55//userscripts/view.image.links.user.js"</span>
Accept-Ranges: bytes
Content-Length: 44055
Connection: close
Content-Type: text/plain
X-Pad: avoid browser bug

</pre>

<p>所以我們可以比較這個值即可. 但是另一個問題是, 要如何取得已安裝程式的版本呢? 我原本有想過利用 SVN Keyword 的方式, 自動 replace 程式中的 $Revision$ keyword, 不過後來發現 SVN 是由 client 來進行 Keyword replace, 所以使用 HTTP 方式取得的內容Keyword並不會被代換掉, 因此只好用 GM_getValue/GM_setValue 來處理了. 以下便是 check update 的程式碼片斷:</p>

<pre>
    if('200' != rspDtls.status){
        GM_log('check failed, response HTTP status: '+rspDtls.status);
        return;
    }else{
        var myrev = parseInt(GM_getValue(revtag,'0'));
        var remoterev = parseInt(rspDtls.responseHeaders.match(/Etag:\s+"([0-9]+).*"/)[1]);
        GM_log('remote rev is ' + remoterev + ', current rev is ' + myrev);
        if(myrev < remoterev){
            return updateFunction(rspDtls, remoterev);
        }else{
            if(showOptMessage){
                alert('remote rev is ' + remoterev + ', my rev is ' + myrev + ', no need to update.');
            }
            return true;
        }
    }
</pre>

<p>至於第二點, "如何下載及更新本機Userscript", 我一開始的想法是直接 window.open() 到 userscript 的 URL, Greasemonkey 便會自動出現安裝提示. 但後來發現, 這樣的安裝方法會清掉現有的 Include/Exclude page 設定,
所以便改用直接覆蓋已安裝檔案的方法. 而問題又來了: 要如何取得現有的安裝路徑及檔名呢? 這時候就要直接去挖 greasemonkey extension 的 source 了. 在 greasemonkey 的 util.js 中可以看到這一段:</p>

</pre><pre>

function getScriptDir() {
  var dir = getNewScriptDir();

  if (dir.exists()) {
    return dir;
  } else {
    var oldDir = getOldScriptDir();
    if (oldDir.exists()) {
      return oldDir;
    } else {
      // if we called this function, we want a script dir.
      // but, at this branch, neither the old nor new exists, so create one
      return GM_createScriptsDir(dir);
    }
  }
}
function getNewScriptDir() {
  var file = Components.classes["@mozilla.org/file/directory_service;1"]
                       .getService(Components.interfaces.nsIProperties)
                       .get("ProfD", Components.interfaces.nsILocalFile);
  file.append("gm_scripts");
  return file;
}

function getOldScriptDir() {
  var file = getContentDir();
  file.append("scripts");
  return file;
}

</pre>

<p>直接 copy paste 到 VIL 中就 ok 了. 取得 script install dir, 再用 DOMParser 取得安裝後的檔名(修改自 greasemonkey 的 config.js):</p>

<pre>
function getInstalledFileName(){
    var installedFilename = '';
    var configContents = getContents(getScriptFileURI("config.xml"));
    var domParser = new DOMParser();
    var doc = domParser.parseFromString(configContents, "text/xml");
    var nodes = doc.evaluate("/UserScriptConfig/Script", doc, null, 0, null);
  for (var node = null; (node = nodes.iterateNext()); ) {
        var fname = node.getAttribute("filename");
    var name = node.getAttribute("name");
    var namespace = node.getAttribute("namespace");
        if(name == MY_NAME &#038;&#038; namespace == MY_NAMESPACE){
            installedFilename = fname;
            break;
        }
  }
  return installedFilename;
}
</pre>

<p>之後就直接 overwite 掉現有的 userscript, 再 alert 提示使用者重新整理頁面即可.</p>

<p>解決這兩個問題之後, userscript 便可以享有 auto-update 的功能了. 有在寫 userscript 的朋友可以參考看看.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/144/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links &#8211; Auto-Update ?</title>
		<link>http://blog.djh5e.org/archives/143</link>
		<comments>http://blog.djh5e.org/archives/143#comments</comments>
		<pubDate>Sat, 19 Apr 2008 06:11:10 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=143</guid>
		<description><![CDATA[誰說 Userscript 不能做自動 update? 有圖有真相: 完成後: 用 AutoUpdate 有什麼好處呢? 不用重設 include/exclude page (如果直接用 greasemonkey 重新安裝就要重設) 除了自動 update userscript, 還會自動更新 filter config! 設定頁面如下: 趕快安裝後試用看看吧! PS. 如此你現在已經有另外設定過 include/exclude page, 那麼可以參考以下做法避免重設 include/exclude page: 打開 Greasemonkey 管理頁面: 先於左側點選 &#8220;View Image Links&#8221;, 然後再點選下方的 &#8220;編輯&#8221;: 如此一來, Firefox 會用 text editor 開啟已安裝的 userscript file, 此時自行把最新的 source code 貼上後存檔即可!]]></description>
			<content:encoded><![CDATA[<p>誰說 Userscript 不能做自動 update? 有圖有真相:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830294474223650"><img src="http://lh4.ggpht.com/horance/SAmIpo948CI/AAAAAAAAAYc/jDY4OlVNBy8/s800/autoupdate_01.jpg" /></a>
</div>

<p>完成後:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830298769190962"><img src="http://lh5.ggpht.com/horance/SAmIp4948DI/AAAAAAAAAYk/jFxcN2n-jxE/s800/autoupdate_02.jpg" /></a>
</div>

<p><span id="more-143"></span></p>

<p>用 AutoUpdate 有什麼好處呢?</p>

<ol>
<li>不用重設 include/exclude page (如果直接用 greasemonkey 重新安裝就要重設)</li>
<li>除了自動 update userscript, 還會自動更新 filter config!</li>
</ol>

<p>設定頁面如下:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830294474223634"><img src="http://lh4.ggpht.com/horance/SAmIpo948BI/AAAAAAAAAYU/1NxqJ_Uaxhw/s800/autoupdate.jpg" /></a>
</div>

<p>趕快安裝後試用看看吧!</p>

<p>PS. 如此你現在已經有另外設定過 include/exclude page, 那麼可以參考以下做法避免重設 include/exclude page:</p>

<ul>
<li>打開 Greasemonkey 管理頁面:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830307359125570"><img src="http://lh3.ggpht.com/horance/SAmIqY948EI/AAAAAAAAAYs/B5BaMGwjP0E/s800/gm_edit_01.jpg" /></a>
</div>

<ul>
<li>先於左側點選 &#8220;View Image Links&#8221;, 然後再點選下方的 &#8220;編輯&#8221;:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830320244027474"><img src="http://lh6.ggpht.com/horance/SAmIrI948FI/AAAAAAAAAY0/HBjC9EXLQIk/s800/gm_edit_02.jpg" /></a>
</div>

<p>如此一來, Firefox 會用 text editor 開啟已安裝的 userscript file, 此時自行把最新的 <a href="https://opensvn.csie.org/MirrorScripts/userscripts/view.image.links.user.js">source code</a> 貼上後存檔即可!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links &#8211; Security Notices</title>
		<link>http://blog.djh5e.org/archives/138</link>
		<comments>http://blog.djh5e.org/archives/138#comments</comments>
		<pubDate>Fri, 11 Apr 2008 15:39:32 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[VIL]]></category>
		<category><![CDATA[XPCOM]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=138</guid>
		<description><![CDATA[這篇要講一下, 使用 VIL 在安全上要注意的事項. 如果您有使用到 VIL 的 PicLens 功能或 Download 功能的話, 一定對這個提示視窗不陌生: 因為 PicLens 及 Download 功能, 都有透過 javascript 呼叫 Mozilla 的 XPCOM 元件, 來存取您電腦上的資源, 例如選擇本機目錄或寫入暫存 Media RSS 供 PicLens 讀取等等. 而要呼叫 XPCOM 元件就得先取得 &#8220;UniversalXPConnect&#8221; 的權限. 例如程式原始碼中可以看到如下片斷: function browseOutputFolder(){ unsafeWindow.netscape.security.PrivilegeManager .enablePrivilege("UniversalXPConnect"); const nsIFilePicker = Components.interfaces .nsIFilePicker; var fp = Components.classes["@mozilla.org/filepicker;1"] .createInstance(nsIFilePicker); fp.init(window, "Album Output Folder", [...]]]></description>
			<content:encoded><![CDATA[<p>這篇要講一下, 使用 VIL 在安全上要注意的事項.</p>

<p>如果您有使用到 VIL 的 PicLens 功能或 Download 功能的話, 一定對這個提示視窗不陌生:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184704479444473106"><img src="http://lh3.ggpht.com/horance/R_PFQRqqFRI/AAAAAAAAARo/07-TctsNczc/s400/install_05.jpg" /></a>
</div>

<p>因為 PicLens 及 Download 功能, 都有透過 javascript 呼叫 Mozilla 的 XPCOM 元件, 來存取您電腦上的資源, 例如選擇本機目錄或寫入暫存 Media RSS 供 PicLens 讀取等等. 而要呼叫 XPCOM 元件就得先取得 &#8220;UniversalXPConnect&#8221; 的權限. 例如程式原始碼中可以看到如下片斷:
<span id="more-138"></span>
<code></code></p>

<pre>
function browseOutputFolder(){
    <span style="color: blue">unsafeWindow.netscape.security.PrivilegeManager
           .enablePrivilege("UniversalXPConnect");</span>
    const nsIFilePicker = Components.interfaces
           .nsIFilePicker;
    var fp = Components.classes["@mozilla.org/filepicker;1"]
           .createInstance(nsIFilePicker);
    fp.init(window, "Album Output Folder", 
               nsIFilePicker.modeGetFolder);
    var rv = fp.show();
    if (rv == nsIFilePicker.returnOK) {
      _gel('vil_output_path').value = fp.file.path;
    }
}
</pre>

<p></p>

<p>這段程式會呼叫 XPCOM 中的 filepicker 類別, 讓使用者選擇要存放相簿的目錄. 當程式執行到
<code>
<span style="color: blue">PrivilegeManager.enablePrivilege("UniversalXPConnect");</span>
</code>
這一行時, FireFox 就會出現要求使用允許的對話框了.
可是, 為什麼<span style="color: red"><strong>不可以</strong></span>勾選<span style="color: blue">&#8220;記住此決定&#8221;</span>呢?
假設我們在看無名相簿時使用了PicLens功能, 如果在確認對話框中有勾選<span style="color: blue">&#8220;記住此決定&#8221;</span>的話, 系統會把以下幾行存放到 profile 目錄下的 pref.js 中:</p>

<p><code></code></p>

<pre style="font-size: 0.8em">
user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect");
user_pref("capability.principal.codebase.p0.id", <span style="color: red">"http://www.wretch.cc/"</span>);
user_pref("capability.principal.codebase.p0.subjectName", "");
</pre>

<p></p>

<p>事實上, 標紅字的部分應該要是執行 enablePrivilege(&#8220;UniversalXPConnect&#8221;) 的 script 所在的 Domain URL, 但是由於我們是在 Userscript 中執行的, 因此 FireFox 會以<span style="color: red">&#8220;目前的URL&#8221;</span>加入記錄, 也就會變成 <span style="color: red">&#8220;http://www.wretch.cc/&#8221;</span>. 如此, <span style="color: red">以後如果 wretch.cc 中出現了 enablePrivilege(&#8220;UniversalXPConnect&#8221;) 呼叫, 就會直接被允許了, 形成安全漏洞.</span></p>

<p>如果您在使用 VIL + PicLens 時, 曾經勾選過<span style="color: blue">&#8220;記住此決定&#8221;</span>的話, 那麼先關閉FireFox 之後, 把 &lt;profile&gt;/pref.js 中 &#8220;capability.principal.codebase&#8230;.&#8221; 相關的設定刪除後再重開 FireFox 即可. 造成大家不便請多多見諒囉! 近期有空的話我會把 VIL 改寫成 FireFox Extension 的, 請大家再耐心等等吧!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/138/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links, Now with Download function</title>
		<link>http://blog.djh5e.org/archives/137</link>
		<comments>http://blog.djh5e.org/archives/137#comments</comments>
		<pubDate>Fri, 11 Apr 2008 14:44:46 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=137</guid>
		<description><![CDATA[昨晚一時興起, 翻了翻 MDC, 把 VIL 加上了 Download 功能. 這個功能應該不用多解釋吧? 我們看圖說故事吧! 先從熱門相簿裡隨便挑一本來看看. 點一下右上角的 &#8220;Download&#8221; (介面變了, 把原本很多字的 Button 簡化了XD)之後: 點選&#8221;Browse&#8221;來選擇要儲存的目錄, 確認點選&#8221;Start&#8221;, 會先出現一個提示(雖然有點多餘, 但是理由下一篇會解釋) 下載時檔案列表會依進度變化, 全部下載完後會出現如下的提示! 以上! 各位圖片松鼠們快去收圖吧!]]></description>
			<content:encoded><![CDATA[<p>昨晚一時興起, 翻了翻 <a href="http://developer.mozilla.org/">MDC</a>, 把 VIL 加上了 Download 功能. 這個功能應該不用多解釋吧? 我們看圖說故事吧!</p>

<p>先從熱門相簿裡隨便挑一本來看看. 點一下右上角的 &#8220;Download&#8221; (介面變了, 把原本很多字的 Button 簡化了XD)之後:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5187995406671093842"><img src="http://lh6.ggpht.com/horance/R_92Vc79IFI/AAAAAAAAASw/erbNrIN_Qd8/s400/download01.jpg" /></a></div>

<p><span id="more-137"></span>
點選&#8221;Browse&#8221;來選擇要儲存的目錄, 確認點選&#8221;Start&#8221;, 會先出現一個提示(雖然有點多餘, 但是理由<a href="http://blog.djh5e.org/archives/138">下一篇</a>會解釋)</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5187995419555995746"><img src="http://lh5.ggpht.com/horance/R_92WM79IGI/AAAAAAAAAS4/9hwk6bqjGis/s400/download02.jpg" /></a>
</div>

<p>下載時檔案列表會依進度變化, 全部下載完後會出現如下的提示!</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5187995458210701442"><img src="http://lh6.ggpht.com/horance/R_92Yc79III/AAAAAAAAATI/4gULFcZ7Hxc/s400/download04.jpg" /></a>
</div>

<p>以上! 各位圖片松鼠們快去收圖吧!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/137/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links + PicLens 安裝 &amp; 設定</title>
		<link>http://blog.djh5e.org/archives/135</link>
		<comments>http://blog.djh5e.org/archives/135#comments</comments>
		<pubDate>Wed, 02 Apr 2008 18:14:00 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PicLens]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=135</guid>
		<description><![CDATA[為什麼要分兩篇呢? 因為圖太多了..分開來貼應該比較清楚點:p 廢話少說, 以下就是安裝 &#38; 設定方法: 為你的Firefox安裝以下 extension: Greasemonkey(執行Userscript用) RefControl(因為無名會擋 referer&#8230;) PicLens當然也要裝 到 http://userscripts.org/ 安裝 View Image Links userscript. (如下圖, 按右邊的 &#8220;Install this script&#8221;) 3. 先設定 RefControl, 以無名相簿為例: - 由 Firefox 選單 Tools &#8211;> RefControl Options, 點選&#8221;新增網站&#8221;後, 依Wiki的說明輸入網站及自訂Referer值: 設定filter, 以無名相簿為例 由 Firefox 選單 Tools &#8211;> Greasemonkey &#8211;> Manage User Scripts, 左邊選 &#8220;View Image Links&#8221;, 按右邊的 [...]]]></description>
			<content:encoded><![CDATA[<p>為什麼要分兩篇呢? 因為圖太多了..分開來貼應該比較清楚點:p 廢話少說, 以下就是安裝 &amp; 設定方法:</p>

<ol>
<li>為你的Firefox安裝以下 extension:

<ul>
<li><a href="https://addons.mozilla.org/zh-TW/firefox/addon/748">Greasemonkey</a>(執行Userscript用)</li>
<li><a href="https://addons.mozilla.org/zh-TW/firefox/addon/953">RefControl</a>(因為無名會擋 referer&#8230;)</li>
<li><a href="https://addons.mozilla.org/zh-TW/firefox/addon/5579">PicLens</a>當然也要裝</li>
</ul></li>
<li>到 <a href="http://userscripts.org/scripts/show/24687">http://userscripts.org/</a> 安裝 View Image Links userscript.</li>
</ol>

<p>(如下圖, 按右邊的 &#8220;Install this script&#8221;)</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193180874645228546"><img src="http://lh3.ggpht.com/horance/SBHifaeUzAI/AAAAAAAAAZU/xChMzYH22_k/s400/userscript.jpg" /></a>
</div>

<p><span id="more-135"></span>
3. 先設定 RefControl, 以無名相簿為例:
-  由 Firefox 選單 Tools &#8211;> RefControl Options,  點選&#8221;新增網站&#8221;後, 依<a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">Wiki</a>的說明輸入網站及自訂Referer值:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184706622633153826"><img src="http://lh6.google.com/horance/R_PHNBqqFSI/AAAAAAAAARw/pz4WNqDvuEw/s400/install_refcontrol_02.jpg" /></a></div>

<ol>
<li>設定filter, 以無名相簿為例

<ul>
<li>由 Firefox 選單 Tools &#8211;> Greasemonkey &#8211;> Manage User Scripts, 左邊選 &#8220;View Image Links&#8221;, 按右邊的 &#8220;Add&#8221;, 再輸入 &#8220;http://www.wretch.cc/album/album.php*&#8221;</li>
</ul></li>
</ol>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701846629520578"><img src="http://lh6.google.com/horance/R_PC3BqqFMI/AAAAAAAAARA/KKwAwSUgboA/s400/install_01.jpg" /></a></div>

<ul>
<li>連到 http://www.wretch.cc/ ,選一本你想看的相簿, 如果設定正確會在右上角出現三個button:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184695988294128802"><img src="http://lh6.google.com/horance/R_O9iBqqFKI/AAAAAAAAAQw/YxuSrvMqMl4/s400/control_view.jpg" /></a></div>

<ul>
<li>點選 Config, 會出現以下的設定畫面, 在這可以依 <a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">Wiki</a>的說明設定. 輸入完後點選&#8221;Save&#8221;.</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701855219455186"><img src="http://lh4.google.com/horance/R_PC3hqqFNI/AAAAAAAAARI/l0HV6AzO6O8/s400/install_02.jpg" /></a></div>

<ul>
<li>點選 &#8220;View Image Links&#8221;, 應該會出現如下圖的 viewer 畫面</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184681960930940018"><img src="http://lh4.google.com/horance/R_OwxhqqFHI/AAAAAAAAAQY/ahW-WsO8l-c/s400/old_viewer_01.png.jpg" /></a></div>

<ul>
<li>接著請試 &#8220;Start PicLens Lite&#8221;, 會看到以下的提示訊息:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701863809389810"><img src="http://lh6.google.com/horance/R_PC4BqqFPI/AAAAAAAAARY/Ad0hFsxShr0/s800/install_04.jpg" /></a></div>

<ul>
<li>點選確定後會看到 Lite 版的畫面.</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184682085484991618"><img src="http://lh5.google.com/horance/R_Ow4xqqFII/AAAAAAAAAQg/tzAjDpbgutg/s400/lite_viewer_01.jpg" /></a></div>

<ul>
<li>到 Firefox 網址列輸入 about:config, 把 signed.applets.codebase_principal_support 設定值改為 true</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701859514422498"><img src="http://lh5.google.com/horance/R_PC3xqqFOI/AAAAAAAAARQ/u4HfWv_fULA/s400/install_03.jpg" /></a></div>

<ul>
<li>回到無名相簿, 再次點選 &#8220;Start PicLens Lite&#8221;, 會出現以下確認視窗. <strong>建議&#8221;不要&#8221;勾選&#8221;記住此決定&#8221;</strong>, 點選&#8221;允許&#8221;. (會出現此確認視窗是因為程式中用到 XPCOM 來寫檔, 檔案會存在 User Home 下的 gm_vil_temp_rss.xml)</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184704479444473106"><img src="http://lh3.google.com/horance/R_PFQRqqFRI/AAAAAAAAARo/07-TctsNczc/s400/install_05.jpg" /></a></div>

<ul>
<li>允許後就會出現 3D 的 PicLens 囉!</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184688076964369554"><img src="http://lh4.google.com/horance/R_O2VhqqFJI/AAAAAAAAAQo/4s-sQi726eo/s400/3d_viewer_01.jpg" /></a></div>

<p>大致上就是這樣. 如果你遇到PicLens只有顯示黑框, 但沒有正確顯示圖片, 那表示你的 RefControl 沒有設定好,
或是設定前就用 PicLens 看過同一頁(會被cache住),請設定好 RefControl 後再<strong>重開 Firefox</strong>即可.相關的 Filter 設定可以在  <a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">Wiki</a> 上找到, 以後會陸續增加. 看圖快樂囉! <img src='http://blog.djh5e.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/135/feed</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>用 PicLens 看無名/Pixnet 的圖片!</title>
		<link>http://blog.djh5e.org/archives/134</link>
		<comments>http://blog.djh5e.org/archives/134#comments</comments>
		<pubDate>Wed, 02 Apr 2008 18:13:39 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PicLens]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=134</guid>
		<description><![CDATA[最近才知道有這套很帥的看圖工具: PicLens, 可以把 flickr/picasa&#8230; 等各大線上相簿或網站的圖片用 3D 的方式呈現, 效果很炫, 讓原本不怎麼樣的照片都變好看了 XD 有這麼帥的工具, 不拿他來看正妹圖實在對不起自己啊! 很可惜的是, 目前正妹兩大集散地: 無名小站 &#38; Pixnet 都沒有支援PicLens, 所以我就決定要自力救濟啦! 我之前寫過一個看圖專用的 Userscripts: View Image Links, 我自己是用得很順手啦, 但是我想沒幾個人像我一樣變態愛看圖, 所以用的人應該不多。這次把原本的程式修改了一下, 把原本由頁面上過濾出來的圖片URL資訊, 轉換成 Media RSS 格式, 再餵給PicLens Lite API, 所以原本單調的看圖畫面: 就變成了 PicLens Lite 版的畫面: 是不是好看多了? 但是&#8230;3D特效呢? 為什麼沒出來? 我明明就有安裝 PicLens Firefox Extension 啊?! 仔細研究了一下, 發現我原本的寫法, 是把產生出來的 RSS XML String 直接透過 [...]]]></description>
			<content:encoded><![CDATA[<p>最近才知道有這套很帥的看圖工具: <a href="http://www.piclens.com/">PicLens</a>, 可以把 flickr/picasa&#8230; 等各大線上相簿或網站的圖片用 3D 的方式呈現, 效果很炫, 讓原本不怎麼樣的照片都變好看了 XD</p>

<p>有這麼帥的工具, 不拿他來看正妹圖實在對不起自己啊! 很可惜的是, 目前正妹兩大集散地: <a href="http://www.wretch.cc/">無名小站</a> &amp; <a href="http://www.pixnet.net/">Pixnet</a> 都沒有支援<a href="http://www.piclens.com/">PicLens</a>, 所以我就決定要自力救濟啦!</p>

<p>我之前寫過一個看圖專用的 <a href="http://blog.djh5e.org/archives/75">Userscripts: View Image Links</a>, 我自己是用得很順手啦, 但是我想沒幾個人像我一樣<strike>變態</strike>愛看圖, 所以用的人應該不多。這次把原本的程式修改了一下, 把原本由頁面上過濾出來的圖片URL資訊, 轉換成 Media RSS 格式, 再餵給<a href="http://piclens.com/lite/piclens-lite.php">PicLens Lite API</a>, 所以原本單調的看圖畫面:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184681960930940018"><img src="http://lh4.google.com/horance/R_OwxhqqFHI/AAAAAAAAAQY/ahW-WsO8l-c/s400/old_viewer_01.png.jpg" /></a></div>

<p>就變成了 PicLens Lite 版的畫面:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184682085484991618"><img src="http://lh5.google.com/horance/R_Ow4xqqFII/AAAAAAAAAQg/tzAjDpbgutg/s400/lite_viewer_01.jpg" /></a></div>

<p>是不是好看多了? 但是&#8230;3D特效呢? 為什麼沒出來? 我明明就有安裝 PicLens Firefox Extension 啊?! 仔細研究了一下, 發現我原本的寫法, 是把產生出來的 RSS XML String 直接透過 API 呼叫傳入 PicLens, <strong>而這種方式只會呈現 Lite 版介面</strong>(其實我很好奇為什麼有這個限制?). 不過, 山不轉路轉, 在測試之後發現, PicLens API 也接受 &#8220;file://&#8221; 開頭的 feed URL, 所以馬上動手修改, 3D 畫面就出來囉!</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184688076964369554"><img src="http://lh4.google.com/horance/R_O2VhqqFJI/AAAAAAAAAQo/4s-sQi726eo/s400/3d_viewer_01.jpg" /></a></div>

<p>至於要怎麼安裝? 請看<a href="http://blog.djh5e.org/archives/135">下一篇</a>&#8230;.</p>

<ul>
<li>補一張看起來比較3D一點的圖? XD</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5185778448901739826"><img src="http://lh4.google.com/horance/R_eWBhqqFTI/AAAAAAAAASQ/JaHMpEpEAbA/s400/3d_viewer_02.jpg" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/134/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Release often! view.image.links.user.js updated!</title>
		<link>http://blog.djh5e.org/archives/82</link>
		<comments>http://blog.djh5e.org/archives/82#comments</comments>
		<pubDate>Thu, 25 May 2006 14:39:49 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/archives/82</guid>
		<description><![CDATA[view.image.links.user.js updated! :p 現在有 configuration panel 囉! change log 在 https://opensvn.csie.org/traccgi/MirrorScripts/trac.cgi/changeset/14 以下是新功能的 screenshot: Enjoy!]]></description>
			<content:encoded><![CDATA[<p><a href="https://opensvn.csie.org/MirrorScripts/userscripts/view.image.links.user.js">view.image.links.user.js</a> updated! :p 現在有 configuration panel 囉!</p>

<p>change log 在 <a href="https://opensvn.csie.org/traccgi/MirrorScripts/trac.cgi/changeset/14">https://opensvn.csie.org/traccgi/MirrorScripts/trac.cgi/changeset/14</a>
以下是新功能的 screenshot:</p>

<p><img id="image83" src="http://blog.djh5e.org/wp-content/uploads/2006/05/vilconf.png" alt="vilconf.png" /></p>

<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/82/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Userscript: View image links</title>
		<link>http://blog.djh5e.org/archives/75</link>
		<comments>http://blog.djh5e.org/archives/75#comments</comments>
		<pubDate>Wed, 24 May 2006 09:55:25 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/archives/75</guid>
		<description><![CDATA[昨天下班前突發奇想, 想來寫個 userscripts 來改善一下某些網站的看圖方法&#8230;於是, 就寫了這個 &#8220;View Image Links(VIL)&#8221;. 你可以想像這是某種 javascript 漫畫機 (布丁大師說這是 &#8220;AJAX漫畫機&#8221;, 我是覺得沒那麼偉大啦&#8230;:p ) Usage 這個 userscript 的預設行為是把目前頁面中所有的 &#8220;image link&#8221; 抓出來, (ex: &#60;a href="aabbcc.jpg"&#62;aabbcc&#60;/a&#62; 這樣的 link), 然後用類似看圖程式的方法顯示。 例如這樣的測試頁面: 如果有安裝這個 userscript, 右上角會出現一個 &#8220;Show image links viewer&#8221; 的 button: 按下這個 button 後, 就會出現 Viewer 畫面了: 使用方式滿直覺的, 有興趣請玩玩看吧! P.S. 每個 button 都加上了 access key, 都設定為button的第一個字元. 所以 alt-n [...]]]></description>
			<content:encoded><![CDATA[<p>昨天下班前突發奇想, 想來寫個 userscripts 來改善一下某些網站的看圖方法&#8230;於是, 就寫了這個 &#8220;View Image Links(VIL)&#8221;. 你可以想像這是某種 javascript 漫畫機 (<a href="http://hlb.yichi.org/blog/">布丁大師</a>說這是 &#8220;AJAX漫畫機&#8221;, 我是覺得沒那麼偉大啦&#8230;:p )</p>

<p><span id="more-75"></span></p>

<h3>Usage</h3>

<p>這個 userscript 的預設行為是把目前頁面中所有的 &#8220;image link&#8221; 抓出來, (ex: <code>&lt;a href="aabbcc.jpg"&gt;aabbcc&lt;/a&gt;</code> 這樣的 link), 然後用類似看圖程式的方法顯示。</p>

<p>例如這樣的測試頁面:</p>

<p><img id="image77" src="http://blog.djh5e.org/wp-content/uploads/2006/05/vil01.png" alt="vil01.png" /></p>

<p>如果有安裝這個 userscript, 右上角會出現一個 &#8220;Show image links viewer&#8221; 的 button:</p>

<p><img id="image78" src="http://blog.djh5e.org/wp-content/uploads/2006/05/vil01a.png" alt="vil01a.png" /></p>

<p>按下這個 button 後, 就會出現 Viewer 畫面了:</p>

<p><img id="image79" src="http://blog.djh5e.org/wp-content/uploads/2006/05/vil02.png" alt="vil02.png" /></p>

<p>使用方式滿直覺的, 有興趣請玩玩看吧!</p>

<p>P.S. 每個 button 都加上了 access key, 都設定為button的第一個字元. 所以 alt-n = Next, alt-p = Prev&#8230;etc.</p>

<h3>Install</h3>

<p>click here: <a href="https://opensvn.csie.org/MirrorScripts/userscripts/view.image.links.user.js">view.image.links.user.js</a></p>

<p><em>NOTE:</em> 這個 userscript 並沒有預設的 included page url pattern, 安裝後請自行到 &#8220;Manage User Scripts&#8221; 指定.</p>

<h3>Hack!</h3>

<p>當然, 如果只能看 Apache index page 的話還真的沒什麼意思, 所以接下來要介紹的是這個 userscript 的特點: filter config</p>

<p>這個程式用的 filter function 只有一個限制, 就是傳回值必須是一個內含圖片 URL 的 Array。例如, 預設的 filter code 如下:</p>

<pre><code>//this is the default filter function
function defaultFilter(){
    //the array to store image urls
    var myurls = new Array();
    // get all &lt;a href="....."&gt; in current document
    var links = document.getElementsByTagName('a');
    //check all links
    for(var i=0;i&lt;links.length;i++){
        // if the URL ended with jpg/gif/png
        if(links[i].href.match(/.*\.(jpg|gif|png)$/i)){
            //push to buffer
            myurls.push(links[i].href);
        }
    }
    //ta da!
    return myurls;
}
</code></pre>

<p>寫好了 filter code 之後, 就可以設定給 VIL. 但還必需指定這個 filter function 是給哪個 URL 用的。完整的 filter config 其實是一個 javascript associated array, key 是一個 regex pattern。 例如:</p>

<pre><code>{ '^.*foo\.bar\.com.*$' : function(){ //filter function code here }}
</code></pre>

<p>表示 URL 中出現 foo.bar.com 的話, 就用這個 filter function. 若config 中設定的 regex pattern 跟目前的 URL 都不 match, 那麼程式會自動使用預設的 Filter.</p>

<p>寫好 filter config 後(強烈建議使用<a href="http://www.squarefree.com/shell/">Javascript Shell</a>來開發&amp;測試), 您可以用 工具-> User Script Command 中的 &#8220;Image Link Viewer Filter&#8230;&#8221; 指令把 config 指定進去:</p>

<p><img id="image80" src="http://blog.djh5e.org/wp-content/uploads/2006/05/vil03.png" alt="vil03.png" /></p>

<p>這個功能用到了 Javascript 裡的 prompt() function, 但一次只能輸入一行, 所以你得把 filter config 全部變成一行才能貼上。如果有人知道更好的方法請告訴我 :p</p>

<p><img id="image81" src="http://blog.djh5e.org/wp-content/uploads/2006/05/vil04.png" alt="vil04.png" /></p>

<p>設定完後, refresh 就會生效了.</p>

<h3>Example</h3>

<p>以下的 filter config 範列是在看某相片很多的站用的, 請參考 :p</p>

<pre><code>{
    '^.*www\.wretch\.cc.*$': function() {
        var myurls = new Array();
        var links = document.getElementsByTagName('img');
        for (var i = 0; i &lt; links.length; i++) {
            if (!links[i].src.match( /^.*ad\.wretch.*$/ )) {
                myurls.push(links[i].src.replace( /thumbs\/t/,''));
            }
        }
        return myurls;
    }
}
</code></pre>

<p>縮成一行後:</p>

<div style="overflow: scroll;"><pre><code>{'^.*www\.wretch\.cc.*$': function() {var myurls = new Array();var links = document.getElementsByTagName('img');for (var i = 0; i < links.length; i++) {if (!links[i].src.match( /^.*ad\.wretch.*$/ )) {myurls.push(links[i].src.replace( /thumbs\/t/,''));}}return myurls;}}</code></code></pre></div>

<p>請享用! XD</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/75/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gmail 新功能?</title>
		<link>http://blog.djh5e.org/archives/36</link>
		<comments>http://blog.djh5e.org/archives/36#comments</comments>
		<pubDate>Tue, 28 Mar 2006 13:27:08 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Userscript]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/archives/36</guid>
		<description><![CDATA[早上發現, 用 greasemonkey userscript 產生的 Gmail Delete Button 突然不 work 了, 仔細一看才發現..怎麼有兩個 &#8220;刪除&#8221; O_O 到&#8221;新功能&#8221;找也沒看到介紹&#8230;是何時長出來的呢..? 倒是在&#8221;新功能&#8221;裡看到, gmail 現在也有 virus scan 了, 不過那個說明&#8230;還真的滿冷的.. :p]]></description>
			<content:encoded><![CDATA[<p>早上發現, 用 greasemonkey userscript 產生的 Gmail Delete Button 突然不 work 了, 仔細一看才發現..怎麼有兩個 &#8220;刪除&#8221; O_O 到&#8221;新功能&#8221;找也沒看到介紹&#8230;是何時長出來的呢..?</p>

<p><img src="http://blog.djh5e.org/wp-content/uploads/2006/03/gmail_delete_button.png" alt="gmail delete button" style="border-right: 2px solid #a5a5a5; border-bottom: 2px solid #a5a5a5;"/></p>

<p>倒是在&#8221;新功能&#8221;裡看到, gmail 現在也有 virus scan 了, 不過那個說明&#8230;還真的滿冷的.. :p</p>

<p><img id="image37" src="http://blog.djh5e.org/wp-content/uploads/2006/03/gmail_virus_scan_desc1.png" alt="gmail virus scan desc" style="border-right: 2px solid #a5a5a5; border-bottom: 2px solid #a5a5a5;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/36/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

