キライなんです。醜いから。なので、極力目に入らないよう次のようなスクリプトを書いた。
// ==UserScript==
// @exclude http://mattz.xii.jp/*
// ==/UserScript==
(
function(){
document.addEventListener(
'DOMContentLoaded',
function(){
document.body.innerHTML = document.body.innerHTML.replace(/([0-9A-Za-z ])/g,function(str,p1){
return {'0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7','8':'8','9':'9',
'A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G','H':'H','I':'I','J':'J','K':'K',
'L':'L','M':'M','N':'N','O':'O','P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V',
'W':'W','X':'X','Y':'Y','Z':'Z','a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g',
'h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o','p':'p','q':'q','r':'r',
's':'s','t':'t','u':'u','v':'v','w':'w','x':'x','y':'y','z':'z','(':'(',')':')',' ':' '}[p1];
});
},false
);
})();
書いたけど、一部のスクリプトを殺してしまうようなので、ご利用は計画的に。
例えば、このDrupalの新規エントリ作成画面のスクリプトが動きません。おかしいなと思ったら、@excludeに追加していただくとか、根本的な問題を修正していた だくとか、そもそも使うのをやめるとかしてください。
2009/10/21 追記
別のスクリプトを作っている過程で、このスクリプトの問題点が分かったので対処。
ついでに、regexp - 全角英数字を半角にの全半変換関数をまんまコピーして作り直した。
Bookmarklet - link them all!でいいじゃねーかって?おっしゃる通り。
// ==UserScript==
// ==/UserScript==
(
function(){
var fascii2ascii = (function(){
var cclass
= '['+String.fromCharCode(0xff01)+'-'+String.fromCharCode(0xff5e)+']';
var re_fullwidth = new RegExp(cclass, 'g');
var substitution = function(m){
return String.fromCharCode(m.charCodeAt(0) - 0xfee0);
};
return function(s){ return s.replace(re_fullwidth, substitution) };
})();
window.addEventListener(
'DOMContentLoaded',
function(){
var x = document.evaluate('//', document, null, 7, null);
var l = x.snapshotLength;
var val;
for(i = 0;i < l;i++){
if('#text' == x.snapshotItem(i).nodeName){
val = x.snapshotItem(i).nodeValue;
x.snapshotItem(i).nodeValue = fascii2ascii(val);
}
}
},false
);
})();