0
我使用a script from Tim Down創建高光。現在,我希望用戶再次點擊瀏覽器操作以將其刪除。從DOM刪除添加的高亮
我以爲我可以添加其他if
聲明,這個片段:
function makeEditableAndHighlight(colour) {
var range, sel = window.getSelection();
if (sel.rangeCount && sel.getRangeAt) {
range = sel.getRangeAt(0);
}
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
// Use HiliteColor since some browsers apply BackColor to the whole block
if (!document.execCommand("HiliteColor", false, '#FFFF00')) {
document.execCommand("BackColor", false, '#FFFF00');
}
if (!document.execCommand("HiliteColor", true, '#FFFF00')) { // Added this logic
document.execCommand("removeFormat", false, null);
}
document.designMode = "off";
}
我的想法是,如果"HiliteColor"
返回true
,它會刪除格式,但它不工作。有什麼想法嗎?
編輯 做更多的閱讀後,我瞭解到,在execCommand
布爾沒有任何與返回的值。我怎樣才能改善我的邏輯以扭轉背景顏色?它是否可行?
這真是太棒了!非常感謝您的幫助。 – Brian
總是樂於幫忙! (只是單挑:我在'serializeRange()'做了一個小改進。) – gkalpak
好吧,因爲我還在學習,我只是爲了確保我理解這個改變:你添加的'==='確保選擇的開始/結束點不會被DOM重構搞亂,對吧?換句話說,如果這些值不相同,它會測試假廣告,然後**添加**突出顯示而不是刪除? – Brian