2011年1月13日木曜日

はてなのキーワードリンクを削除するブックマークレット再び

はてなのキーワードリンクを削除するブックマークレットで除去されないキーワードがあったので見たら、どうもokeywordというクラスもあるらしいことが分かりました。
そこで、keyword, okeywordのリンクを除去するようにしてみました。Selectors APIを使って、両方いっぺんに検索するようにしました。IE8ではドキュメントモードをIE8標準にすれば動きました。

javascript:(function(){var d=document,a=d.querySelectorAll(".keyword,.okeyword"),v,n=a.length;while(n--){v=a[n];v.parentNode.replaceChild(d.createTextNode(v.innerHTML), v)}})()

しかし、Selectors APIは便利ですね。


2011/2/13 追記
上のbookmarkletでは検索語がハイライトされている場合(アンカー中にハイライト用spanが入っている)に期待通り動かないので、対策しました。
自分でNodeを辿るしかないかと思っていましたが面倒だと悩んでいたところ、ふとDOM Rangeを思い出したので調べ直してみたらこれが便利そうなので使ってみました。かなり簡単で便利です。

ついでに検索語のハイライトも無効にするようにしてみました。はてなの検索語ハイライトはキャッシュが効いてしまって、検索してないのにハイライトされることがあって微妙だと思っていたので…

javascript:(function(){var d=document,r=d.createRange(),a=d.querySelectorAll("span.highlight,a.keyword,a.okeyword"),n=a.length,v;while(n--){v=a[n];r.selectNodeContents(v);v.parentNode.replaceChild(r.extractContents(),v);}})();
span.highlightを削れば、検索語のハイライトは残ります。

0 件のコメント:

コメントを投稿