沒穿方服

索引

顯示╱隱藏內文

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 屬性也可作變化,稍微搜尋一下應該就有參考了。

格式可以稍做變化

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

Blogger 預設模板 <header> 中有一行 <b:include data='blog' name='all-head-content'/> 會自動插入有用的 meta(版權、編碼等)、link(預設 Feed 網址等)和其他。

幾個原因考慮刪除:

  1. 會自動插入預設的 favicon,順序沒弄好的話會蓋掉手動加的 favicon。
    參考這篇 Blogger Buster: Fixing Custom Favicons for Blogger Blogs
  2. 會自動插入 MSSmartTagsPreventParsing 這個 meta 項目,防止微軟跑聰明標籤?
  3. 最近又默默加了一段語法,內容可參考 七月佑安: 解決Blogger下jstiming和_WidgetManager未定義的錯誤(但該文結尾並不刪除 'all-head-content');這段語法除了無預警塞進來外,裡面的 & 符號也會在 HTML 驗證造成 9 個錯誤。

只是如第三點的連結中所說,要是刪了,日後說不定又會出問題。