巴哈哈啦區有個白痴功能,就是點連結會跳出對話框詢問是否確定,是的話便在新視窗開啟——相當多此一舉而且(亂開窗)很落伍;然後為了做這效果,還把網址改成 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 都擋掉了所以我也懶得理哩。


原始碼拆開如下:

  1. var links = document.links;  
  2. for(var i = 0; i < links.length; i++) {  
  3.   
  4.   var url = links[i].getAttribute('href');  
  5.   
  6.   if (/^javascript:confirmLink/.test(url)) {  
  7.     var r = url.replace( /^javascript:confirmLink\(\'(.+)\'\)/i, "$1");  
  8.     r = decodeURIComponent(r);  
  9.     links[i].setAttribute('href', r);  
  10.   }  
  11.   else if (/www.youtube.com/.test(url)) {  
  12.     var r = url.replace('http://www.youtube.com/v/''http://www.youtube.com/watch?v=');  
  13.     links[i].setAttribute('href', r);  
  14.   }  
  15.   
  16. }  

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

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