過世兩天了……

(回憶)高中的午休,經常被講臺上(同學的音響)大力放送的 HIStory 轟炸,敝校沒在睡午覺的,但是我容易累所以都趴著,又個子矮所以坐第一排搖滾區,那景象就很可憐兮兮……不過每當被問要不要調小聲(真關心我的話應該關掉吧)我一定趕快不用,因為其實都在偷聽,而且總是暗自禱告第一片要聽到 Black or White、第二片要聽到 Earth Song(那時皆不知曲名)當天聽歌之旅才圓滿。

不只音樂高水準,後來看到 MV 和表演,在網路上見證巡迴中的 Billie Jean,這、這還不稱麥神,也算得上「有魔法的偶像」啊!沒想到這麼快,這位人物已不再「當代」,實在可惜。

而最感嘆的是他這個人,用崇高標準對自己,用寬大的方式對抗不公平;人生最後我看到的還是這樣。

超凡不是與眾不同到沒人理解的地步。世上弱勢、受欺凌的人何其多,你的問題不是我的問題,我也不能知道你的痛苦,這樣想每個人都是寂寞的;所以我不願說 Michael 寂寞,探訪病童的時候,有些孩子『甚至不知道自己發生什麼事』你也難揣測他們的感覺,但這不妨礙你關懷他們,Michael 也還是會講數不清的 I love you(愛還真是多到滿出來),這樣的人連我都覺得親近,怎麼會寂寞呢?

最後偷渡一句中國的歌詞『我的心在疼痛,像童年的委屈』,這是人一輩子也忘不了的,藉此致意。

耶耶!逼勒!POW!尬哩!兮兮!WOW!凹嗚!

Firefox 套件 Noise 今天終於過了 AMO 的審核,主要瑕疵是全域變數沒藏好,白白拖延不少時間。

  1. 2008-10-20 送審,2009-03-27 被退 —— 等了 5 個月。
  2. 2009-03-29 修正並發新版,2009-04-07 第二次送審,2009-06-11 批准公開 —— 等了 2 個月。

中文的 AMO 真順眼

給也在排隊的朋友參考:其間作者只在 AMO 放新版、修改審核註解(昨天又改了一次,也許是關鍵?)此外就什麼也沒做了。

※想瞭解要審核哪些項目,可參考 AMO blog 的 Successfully Getting your Addon Reviewed


選項視窗

順便介紹此套件用途:

  • 安裝後,預設有 20 幾個事件可以改音效(需要 .wav 檔),例如:
    • 尋找已達頁尾/頁首 - 尋找(Ctrl + F)到底的時候叫一聲
    • 提示通知 - 下載完成、找到新元件等,右下角跳出通知的時候叫一聲
    • 瀏覽開始 - 大致上每點一個鏈結就嗶一下的噪音
    • 啟動視窗就緒 - Firefox 啟動還真慢,開好叫我
  • 編輯視窗

    如果預設的不夠,就比較麻煩了,請見 事件參考 表格,手動加入需要的項目,例如:
    • 資訊列通知 - 記住密碼、擋彈出廣告之類的通知,出現時叫一聲
    • 複製 - 複製的時候叫一聲,可以幫助鑑別按到了 Ctrl + C 還是 Ctrl + V
  • 如果是進階使用者,還可試試 事件過濾 功能,在偵測事件之餘,繼續檢驗是否滿足自訂條件,是的話才發聲。甚至用此功能捕捉特定事件,然後做你想做的事;
    例如設定 dblclick&event.button=='2'&&!gFindBar.hidden&&(gFindBar.close()||true) 會在連按兩下右鍵之後,把尋找列關掉。

總之這個套件不是只有「重現 ie 點鏈結答答聲」用的啦,我還覺得那個跟滑鼠滾輪喀喀喀一樣煩人勒。

可以插好多的表單

最近有些 blogger 管理者把留言表單拿掉了,換成彈出視窗,或整頁模式。

這支 bookmarklet 會試著把表單塞回網頁:
自助嵌入 blogger 留言表單


用了沒反應,蛤~怎會這樣?

1)僅在「單篇文章」頁面有用。 2)因各人模板不同,也可能沒效。 3)只支援 Firefox、Google Chrome、Opera 和 Safari 等。

原始碼拆開如下:

var cmt_div = document.getElementById("comments");
var url, anchor, a = cmt_div.getElementsByTagName("a");
for( i = 0 ; i < a.length ; i++ ) {
  if( a[i].hasAttribute("href") && a[i].getAttribute("href").match(/g\?blogID=([0-9]+)\&postID=([0-9]+)/) ) {
    url = 'http://www.blogger.com/comment-iframe.g?blogID=' + RegExp.$1 + '&postID=' + RegExp.$2;
    anchor = a[i];
  }
}
cmt_iframe = document.createElement("object");
cmt_iframe.setAttribute('data', url);
cmt_iframe.setAttribute('style', 'display:block; width:100%; height:250px; color:#000; background-color:#f4f1f4; opacity:0.95; padding:0 4px; margin:2px 0; border:2px solid #fff;');
anchor.parentNode.insertBefore( cmt_iframe, anchor.nextSibling );
window.scrollTo( cmt_div.offsetLeft, cmt_div.offsetTop );

不曉得哪時候開始,用 ie 開某些 blogger 的單篇文章會顯示「操作已中止」錯誤:

讀取到一半,操作已中止 然後就無法顯示網頁

重現方法之一,是在 blogger 後台「意見設定」將「意見欄位置」改為「已內嵌下列文章」,然後在「版面配置」新增 MyBlogLog 的小工具,再用 ie 6 開啟單篇文章網址,就爆了。

關鍵是 blogger 內嵌意見表單的原始碼,裡面的 BLOG_CMT_createIframe 跟 ie 不合,如果把這句延到頁面讀完再執行,可以避開「操作已中止」錯誤:

// 以下是在模板內
if ( document.addEventListener ) {
  document.addEventListener( &quot;DOMContentLoaded&quot;, function(){
    BLOG_CMT_createIframe(&#39;<data:post.appRpcRelayPath/>&#39;, &#39;<data:post.communityId/>&#39;);
  }, false );
}
else if ( document.attachEvent ) {    // ie 跑這邊
  window.attachEvent(&quot;onload&quot;, function(){
    BLOG_CMT_createIframe(&#39;<data:post.appRpcRelayPath/>&#39;, &#39;<data:post.communityId/>&#39;);
  });
}

不過即使如此,測試留言功能依然失敗,送出時會發生「存取被拒」。


我的建議是:除了內嵌表單,最好也弄個鏈結到留言頁面,例如這個 blog 在單篇文章可以點「張貼意見」旁的小傘標 ☂(ie 可能會顯示方框)看到效果。原理可參考舊文 內嵌留言表單 + 彈出留言視窗 中的 手動插入「彈出留言視窗」鏈結

不然使用者關掉 JavaScript 會找不到地方留言。

陽春的 blogspot 連留言編號都要自己做,來龍去脈請見 Abin's Tech Note: 增加文章留言回應的編號 寫得很清楚。作法方面除了該篇採用的 JavaScript 外,也可考慮 CSS counter,在樣式裡加上:

.comments {counter-reset: count;}
.comment-timestamp:before {
  content: counter(count) '.';
  counter-increment: count;
}

其中 count 變數可以隨意改名,content 屬性也可作變化,稍微搜尋一下應該就有參考了。

格式可以稍做變化

※很舊的瀏覽器不支援(我真好心,每次都提這個)