我正在为火狐开发一个扩展。
总结一下,假设它是一个应用于有很多错误的页面的拼写检查器。
但是太慢了,因为台阶太多了。
我创建了一个TreeWalker,它只过滤空文本节点
var tree = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, {
acceptNode: function(node) {
if (node.parentNode.nodeName !== "SCRIPT" && node.nodeValue.trim().length > 0) {
return NodeFilter.FILTER_ACCEPT;
}
}
}, false);
(二)
一个小圈子掠过了树人
(三)
RegEx
const dico = [
['suffix1','suffix2','correction'],
['','',''],
['','',''],
// a lot of lines
];
(四)
文本被替换
dl = dico.length;
function skim(){
while (tree.nextNode()) {
for (var i=0; i < dl ; i++) {
var r1 = new RegExp("([a-zÃ-ÃÃ-öù-üÅÅ]+)?(" + dico[i][0] + ")[-/·â.â¢](" + dico[i][1] + ")[-/·â.â¢]?(s)?(?![a-z])", "gi");
tree.currentNode.nodeValue = tree.currentNode.nodeValue.replace(r1, dico[i][3]);
}
}
}
我该怎么优化呢?:)
目前,我找到的唯一解决办法是简化字典,但我以这个结束了。并替换
TreeWalker
谢谢!