JAMADAM.COM

RSS Subscribe to my RSS feed

Stripe Calendar

Aug, 2010
Jul 78910111213141516171819202122232425262728293031 Aug 1

Entry: 誤ってエンコードされたIDNを直すGreasemonkeyスクリプトを作った

誤ってエンコードされたIDNを直すGreasemonkeyスクリプトを作った

Initial post: 2009.10.18 | Last modified: 2009.10.18

開発ネタがぜんぜん思いつかないのでGreasemonkeyスクリプトでもやってみようと思った。

世の中のWEBシステムの多くは国際化ドメイン名(IDN)に対応していないと最近気づいた。例えばTwitter検索の結果とかにhttp://日本語.jp/とあっても飛び先がエラーになるのはサーバープログラムが「日本語」を誤ってパーセントエンコードしているため。このリンクを正しく動作させるためにドメイン名をデコードするGreasemonkeyスクリプトを作りました。

// ==UserScript==
// @name           idn_fixer
// @namespace      http://jamadam.com/blog/
// @description    This fixes wrongly percent encoded domains in hrefs.
// @include        *
// ==/UserScript==

(function() {
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
    var pos1 = links[i].href.indexOf('//', 0) + 2;
    var pos2 = links[i].href.indexOf('/', pos1);
    var domain = links[i].href.substr(pos1, pos2 - pos1);
    if (domain.indexOf('%') != -1) {
        links[i].href = decodeURI(links[i].href);
    }
}
})();

idn_fixerをインストール

初めてのGreasemonkeyスクリプトなので作法とか間違ってるかも知れません。