無料ブログ「rentafree.net」の管理人ブログ

「検索:ハイライト」プラグインを更新しました

先月「検索:ハイライト」プラグインを更新しましたが、
元々記事ブロックのinnerHTMLを確認して一致部分を<mark>していた仕様をテキストノードだけを<mark>に置換したかったのですが、
その際は難しいと判断して断念したのですが、
再検討して何とかなりそうだったので作りなおして、コード量もそれほど増えずにできましたので変更しました。

元の仕様では、HTMLタグの破損を防ぐために、<と>の間に含まれる文字列が検索された場合はハイライトできませんでしたが、
新しい仕様では検索単語の含まれるテキストノードは全て置換されます。

新しい仕様では、テキストノードが連続しており、連続したテキストノードにまたがって検索単語が出現する場合はハイライトできませんが、
動的にテキストノードを生成しない限りはそのような事にはならないと思われますので、一致するテキストは全てハイライトされるはずです。

また、元の仕様では記事ブロック内のみがハイライト対象でしたが、
公式テンプレートでない場合は記事ブロックのclassが違う可能性がありハイライトできない可能性がありえ、また<body>全体を対象にしたほうが処理が簡単なので、
記事ブロック以外の部分はハイライトしないほうがいいかもしれませんが、<body>内全てを対象にしました。

前回の変更からですが、IE8は<mark>に対応していないためハイライトされません。