WikipediaでURIエンコードされたページをURIデコードしたページに飛ばすスクリプト
どういうことなのか
タイトルどう書けばピンと来るだろうかと考えたんだけど、自分自身にすらピンとくるものが浮かばなかったw
Wikipediaに限らず他のWikiや検索エンジンの結果、ブログなんかでもページのURIにURIエンコードが使われているところは多いですよね。*1
例えば、フェンリル社の場合は以下のような感じですね。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A7%E3%83%B3%E3%83%AA%E3%83%AB_(%E4%BC%81%E6%A5%AD)
でも、ブラウザによってはこういう感じでアクセスしても大丈夫です。
http://ja.wikipedia.org/wiki/フェンリル_(企業)
Chromeだとかはデフォルトで下のような感じになっていますしね。
少なくとも、Sleipnir2のSleipnir形式のブックマークなら "http://ja.wikipedia.org/wiki/フェンリル_(企業)" で登録していても繋がりますし、こちらの方が見栄えがよろしいので、私は専らURIデコードして利用しています。
で、Bookmarkletとかを使っていちいち変換するのもありですが、だんだんと面倒になってきて去年くらいにSeaHorseスクリプトで変換させることにしました。
ちなみに数日前にTwitterでちょいと晒したりしましたが、あれは会社のに入ってた初期版でしたwマズイ点がいくつかあります。
Wikipedia_Title_Decode.user.js
// ==UserScript== // @name Wikipedia Title Decode // @include http://ja.wikipedia.org/wiki/*%* // @type SleipnirScript // ==/UserScript== (function() { if(location.pathname.indexOf("%E") != -1){ var uri = decodeURIComponent(document.getElementById("p-namespaces").getElementsByTagName("a")[0].href); var tmp = decodeURIComponent(sleipnir.api.URL); if(tmp.length == uri.length & tmp == uri) { sleipnir.api.Navigate(sleipnir.api.GetDocumentID(sleipnir.api.ActiveIndex), uri); }else { sleipnir.api.Navigate(sleipnir.api.GetDocumentID(sleipnir.api.ActiveIndex+1), uri); } } }());
※注意点としてはURIエンコードの結果に"%E"が含まれない場合動かないはず。*2
※デコードした状態でも途中に"%E"が含まれるページがある場合、延々とスクリプトが実行されるはず。*3
※SDEのドラッグでバックグラウンド(=アクティブのチェック外してある状態)で開いた時に「タブの追加と削除」の設定次第では予期しないタブが遷移される可能性がある。*4