自分で作ったJavaScriptを適用できる、ユーザーJavaScriptとかってあったら良いのに。それともproxomitronで、他所様のHTML文書のhead要素に<script type="text/JavaScript" src="http://localhost/foo/bar.js"></script>
とか埋め込んでみようかな。で、こちらのIE5.5のDOM実装を利用して、それこそ好きなように料理させていただく。
よく考えてみると、これ、色んな可能性あるなあ。しかもちょっとJavaScriptかじっただけの私でも出来そう(ここが重要なポイント)。要するにこれ、誰もが作れるオリジナルブラウザってことか。
この例は、当然ながらヘンテコなHTMLには無効。head要素が無いとかいう文書には、スクリプトタグを埋め込むことすら出来ない(</head>
を置換するとかそういう方法しか思いつかないので)。この辺がネックだ。
で、早速、blockquote要素のcite属性をハイパーリンクにするというやつを、闇黒日記に適用(※)してみた。ここは何の問題も無く意図どおりに表示された。JavaScriptの競合もないし、cite属性、title属性もきちんと記述されているので当然といえば当然。
で、次。何気なく(´д`;)とか行ってみる。cite要素がダブるけれど、やはり問題なし。ソースを見てみたらJavaScriptが使われていなかったようので競合とか心配して損したというオチ。
そして、恐る恐るoutsider reflexへ。まず、Latest Topicsに入れなかったのでぎょっとした。クリックしても何も起らない。しかし、proxomitron (英語)をバイパスしても同じだったのでこれはまた別の問題らしい。
fub
でなく、素のIEで行ったら入れた。で、意外だったけれど、何の問題も無かった。結構感動した。ただ、こちらのwindow.onload
で何か打ち消してしまっている可能性はある。詳しく見てないのでなんとも言えない。ともかく、こちらが負けてしまうようなことは無かった。
(かなり前、proxomitronでJavaScriptを適当に改変してみたら各所でエライ目に遭ったことがあり、少しトラウマになっていたのでなんだか拍子抜けした。)
しかしこれ、ちょっとでも大衆社会(?)に出ると、途端に何の役にも立ちやしないのである。どこへ行っても、「cite属性なし。title属性なし。」こればかり。というかそれ以前に、blockquote要素が誤用されている。虚しい。次は、外部CSS,JavaScriptファイルへのハイパーリンク生成をやってみようっと。
(※)適用方法は、この外部JavaScriptをproxomitron (英語)でhead要素末尾に埋め込むというもの。
function citeAttToLink(){ var nBlockquotes = document.getElementsByTagName('blockquote'); for(var i=0 ; i<nBlockquotes.length ; i++){ var cite = nBlockquotes[i].cite; var title = nBlockquotes[i].title; if(cite && title){ citeText = '<a href="' +cite+ '">' +title+ '<\/a>'; } else if(cite){ citeText = '<a href="' +cite+ '">' +cite+ '<\/a>'; } else if(title){ citeText = title; } else { citeText = 'cite属性無し。title属性無し。'; } var nP = document.createElement('p'); nP.innerHTML = '<cite>'+citeText+'<\/cite><br \/><i>User-Javascript<\/i>'; nP.style.textAlign = 'right'; nBlockquotes[i].parentNode.insertBefore(nP, nBlockquotes[i].nextSibling); } } window.onload = citeAttToLink;
DOMは、authorの負担を軽減し、かつ、ユーザビリティを高める為にこそ存在意義があると思う。これは以前から思っていたことだ。しかし、誰が主体であるべきかについて考えてみると、それはユーザー側なのではないだろうか。何しろ、authorがDOMをウェブサイトで利用するとなると得体の知れないブラウザのバグに戦々恐々としなければならない。判別等の為、コードも膨らむ一方だ。余計なお節介になってしまうことも大いにあり得る。idやclassをつけていなくても、DOMなら結構色々できるわけで、必要なのはやはり適切なマークアップだけということになる。