2015-06-09 15 views
5

的jsfiddle:http://jsfiddle.net/p7ph5vfj/打字超過跨度增加了幻影的背景顏色樣式

我的問題是:任何人都可以提出一個解決方法,以這種鉻具體的錯誤?我的問題不是字母X突出顯示,而是因爲丟失了.foo類,所以我找不到它了。如果背景顏色消失,我會很好地處理.foo類。我甚至不知道如何調試,因爲當這種情況發生時,DOM斷點不會觸發。

<div contenteditable="true"> 
    DO NOT REPLACE. <span class="foo">END a b c</span> d START la la 
</div> 

和CSS是這樣的:

.foo { 
    background-color: #ff0000; 
} 

的步驟觸發對鉻的錯誤是:

  • 把你的鼠標放在旁邊的字START光標

  • 單擊並按住選擇文本,向左走,完成選擇的字 結束。

  • 的選擇應完全涵蓋以下文本: 「END A B C d START」。再次,選擇必須從右到左。

  • 類型鍵盤上的一個新的角色,像「X」

  • 如果X以紅色突出顯示,你已經引發了錯誤。

特別的錯誤是,HTML現在看起來是這樣的:

<div contenteditable="true"> 
    DO NOT REPLACE. <span style="background-color: rgb(255, 0, 0);">X</span>&nbsp;la la 
</div> 

哪裏了包含.foo類去從何從這個背景顏色風格?將DOM斷點添加到div或跨度不會在發生這種情況時觸發。

+0

做得很好的問題。我很想知道那裏發生了什麼。 – connexo

+2

有趣的是,它從類中獲取背景顏色並將其置於樣式中。什麼是更有趣的是,如果類有一個'color'財產跨度被剝離它的類的包裹與顏色屬性的''標籤! [下面是這樣一個例子](http://jsfiddle.net/yhgp3xcv/) – misterManSam

+0

是的,如果你有'包含.foo {顯示:塊}'它增加了一個額外的''
在跨度。如果你有'.foo {display:inline-block}',那麼span會完全消失。可愛的東西。儘管解決不了我用'id'和'role'測試過,但是這些屬性也消失了。 –

回答

1

我知道這是不是真的乾淨的代碼,但如果你和其他的跨度包住span.foo,這個問題似乎是固定的。

<div contenteditable="true"> DO NOT REPLACE. <span><span class="foo">END a b c</span></span> d START la la </div>

0

的解決方案,我終於登上了添加的keydown的處理程序,檢測這種特定的情況下,再通過添加下劃線它被nerf類名。在keyup我恢復類。

這是醜陋的,並引起視覺閃爍,但在錯誤的嚴重性降低。希望它可以幫助別人。仍在等待WebKit的錯誤是固定的:-)

(這是什麼上面提出索博爾奇伊索夫森,但作爲一個評論,所以我不能將它標記爲答案)