我们需要为 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 页面中的某些部分是可编辑的。