htmlページのいくつかのキーワード/文にアンカーとハイライトを追加する必要があります。Firefoxではハイライトが非常に遅いことがわかりました。
次のコードでは、強調表示する必要のあるすべての範囲が配列に格納されていますhiliteRanges
。
for (var i = 0; i < hiliteRanges.length; i++){
document.designMode = "on";
var selHilites = window.getSelection();
if (selHilites.rangeCount > 0)
selHilites.removeAllRanges();
selHilites.addRange(hiliteRanges[i]);
var anchorId = 'index'+i;
var insertedHTML = '<span id="' + anchorId + '" style="background-color: #FF8C00;" >'+hiliteRanges[i].toString()+'</span>';
document.execCommand('inserthtml', false, insertedHTML);
document.designMode = "off";
}
処理を高速化する方法はありますか?配列には何百もの範囲が含まれる可能性がありますhiliteRanges
。一度designMode
ループの外に設定を移動しようとしましたが、ループの実行中に一部のセクションがhtmlページで編集可能であることがわかります。