如何删除window.find亮点的背景色

时间:2012-02-25 18:46:47

标签: javascript google-chrome

如何回滚由以下代码引起的高光

if (window.find && window.getSelection) {
     var sel = window.getSelection(); 
     sel.collapse(document.body, 0);  
     document.body.offsetHeight;
     if (window.find(text, true)) { 
        document.execCommand("hiliteColor", false, "YellowGreen"); 
        sel.collapseToEnd(); 
     }
}

如何删除背景色的所有高光,即“YellowGreen”。我看到了与我的问题相关的post。但是接受的答案是行不通的。请有人调查并帮助我。

2 个答案:

答案 0 :(得分:1)

我有一个解决方案。你的问题中没有足够的细节可以编写可以插入的东西,所以你可能不得不调整它以获得你想要的东西。

我们的想法是在突出显示代码运行时监视DOMNodeInserted突变事件,并使用className标记插入的节点,然后可以使用Highlighter = (function() { var highlighting = false; document.addEventListener('DOMNodeInserted', function(e) { if (highlighting) { var target = e.target; if (target.nodeType == 1) { target.className = CLASS_NAME; } } }, false); var CLASS_NAME = 'highlighted'; return { highlight: function(text, color) { highlighting = true; var sel = window.getSelection(); sel.collapse(document.body, 0); if (window.find(text, true)) { document.execCommand("hiliteColor", false, color); sel.collapseToEnd(); } highlighting = false; }, unhighlight: function() { var highlighted = document.querySelectorAll('.' + CLASS_NAME); var i = highlighted.length; while (i--) { var node = highlighted[i]; node.parentNode.replaceChild(node.firstChild, node); } } } })(); 来查找和删除它们。 警告:不推荐使用变异事件,但确实没有替代品,所以我正在使用我所拥有的。

{{1}}

仅在Chrome 17中测试过。以下是它的工作:http://jsfiddle.net/LPJqW/

答案 1 :(得分:0)

我找到了替代品......

$('body *').each(function () {
  ($(this).css('background-color') == "rgb(70, 130, 180)") || ($(this).css('background-color') == "rgb(255, 192, 203)") ? $(this).css("background-color", "") : 0;
});