沒穿方服

封存

顯示╱隱藏內文

上傳新範本時遇到的 bX-928o1o 錯誤,狀況如下:

  1. 小裝置即將刪除:

    列出的小裝置就是需要檢查的

  2. 很抱歉:

    bX-928o1o

搜尋一下會找到解答,把 <b:widget id='XX1' 裡的數字改正即可。

具體作法是參考舊的範本(就是管理介面「修改 HTML」那個),裡面有類似 <b:widget id='Feed1' 這樣的東西,但要上傳的範本裡可能是 <b:widget id='Feed4',兩邊 1 跟 4 沒對上就會出問題。

所以請修改要上傳的範本,把 widget id 改成跟舊的一樣即可。像前面例子就是要改成 Feed1

※ 把 widget 砍光再新增,id 好像就會重排的樣子,這樣改舊的 widget 來適應新範本應該也可行。

巴哈哈啦區有個白痴功能,就是點連結會跳出對話框詢問是否確定,是的話便在新視窗開啟——相當多此一舉而且(亂開窗)很落伍;然後為了做這效果,還把網址改成 javascript:confirmLink('http://……') 造成按中鍵也不能在新分頁開鏈結(會開分頁,但內容錯誤)……我點過好幾次,點一次怒一次。

其實在我怒滿之前,已經有人提供解法了:願意裝 Greasemonkey 的話請參考 Goston’s Blog » [FF] 續 - 讓巴哈姆特哈拉區的連結不再以新視窗開啟

不過我沒裝 Greasemonkey 所以繼續集氣…… 結果、最後就寫了 bookmarklet 來做一樣的事:

將 bookmarklet 加入書籤 → 治療巴哈白痴連結(confirmLink)

又發現巴哈插入影片(YouTube 等)的鏈結網址是 http://www.youtube.com/v/……,連過去是全畫面的 .swf 我用不到。所以順便加上把網址變為 http://www.youtube.com/watch?v=…… 的功能,連到影片在 YouTube 的原始網址:

將 bookmarklet 加入書籤 → 治療巴哈白痴連結(兩種功能)

※第二支有副作用,會讓顯示影片的功能爆掉,因為巴哈會用 JavaScript 取鏈結網址來插入 flash。不過反正我的 Stop Autoplay 把全站 flash 都擋掉了所以我也懶得理哩。


原始碼拆開如下:

var links = document.links;
for(var i = 0; i < links.length; i++) {

  var url = links[i].getAttribute('href');

  if (/^javascript:confirmLink/.test(url)) {
    var r = url.replace( /^javascript:confirmLink\(\'(.+)\'\)/i, "$1");
    r = decodeURIComponent(r);
    links[i].setAttribute('href', r);
  }
  else if (/www.youtube.com/.test(url)) {
    var r = url.replace('http://www.youtube.com/v/', 'http://www.youtube.com/watch?v=');
    links[i].setAttribute('href', r);
  }

}

再看一個原設計的荒謬,就是它會提示「您需要先登入才能觀看喔」可是網址明明就顯示在狀態列,為甚麼不能看呢?為甚麼要掩耳盜鈴呢?

圖片的話,點中鍵就可以看了

輸出文字時使用 nl2brURL Helper 裡的 auto_link,例如 nl2br(auto_link($text));
會造成 JavaScript 的 syntax error:

else document.write(unescape(l[i]));}<br />\n

原因是 auto_link 會用 URL Helper 的 safe_mailto 來替換 mailto 鏈結,插入一段 JavaScript,然後裡面有一個換行符號 \n 會被換成 <br /> 找麻煩。

解決方法是 auto_link(nl2br($text)); 順序倒過來即可……

CI 1.7.1 原裝的 auto_link 沒有選項把 safe_mailto 換成 mailto。