我有一個解決方案。在你的問題中沒有足夠的細節能夠寫出可以放入的東西,所以你可能需要調整它以得到你想要的東西。
這個想法是在突出顯示代碼正在運行時監視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);
}
}
}
})();
僅適用於Chrome 17在這裏測試工作的是一個小提琴:http://jsfiddle.net/LPJqW/
你針對一個特定的瀏覽器? Firefox可能? – Hemlock 2012-02-25 19:58:03
@Hemlock我只針對Chrome。 – Exception 2012-02-25 20:00:06
@Tim Down請幫助我。 – Exception 2012-02-25 21:36:28