2014-01-14 51 views
4

在我的contenteditable div中,我將spellcheck屬性設置爲true。 「紅色曲線」在任何存在的時間間隔(或之前)都可以工作,但不能在之後工作。在下面的HTML:HTML拼寫檢查在contenteditable div不能在span後工作

<div contenteditable="true" id="input" class="input" spellcheck="true"> 
    misssspellelellled 
    <span class="test-span"> 
    imaspan! 
    </span> 
    alsomisspelleelled 
</div> 

跨度(alsomisspelleelled)後的第一個字(misssspellelellled)和量程(imaspan!)顯示爲拼寫錯誤的文字,但這個詞沒有。請參見下面的截圖:

Example Screenshot

任何想法,如何解決這一問題?此錯誤可能特定於Chrome。

可以在這裏找到一個現場示例:http://codepen.io/kauffecup/pen/AnBIK(您可能需要關注並模糊div以顯示任何「紅色小波」)。

+0

你活生生的例子鏈接404ing –

+0

對我的作品:。http://i.imgur.com/95GTwYV。 PNG – KPthunder

回答

4

這是在Chrome(和IE)中執行spellcheck的功能:瀏覽器檢查用戶輸入,而不是初始(預填充)內容或以編程方式插入的內容。如果你編輯預先填好的內容,也許只是附加一段時間,瀏覽器可能會對其進行拼寫檢查。確切的條件似乎有所不同。有時只需通過雙擊選擇一個單詞就會導致拼寫檢查。有時,一個單詞由一些標點符號結束是非常重要的。元素的嵌套也可能會影響。

此類行爲在WHATWG HTML(「HTML Living Standard」)中隱含引用,子句Spelling and grammar checking:它描述了forceSpellCheck()(看起來還沒有實現),它「強制用戶代理報告拼寫和語法錯誤元素(如果檢查已啓用),即使用戶從未關注元素。 (如果該方法未被調用,用戶代理可以隱藏文本中的錯誤,而不僅僅是用戶輸入的錯誤。)「

無論如何,結論是你不應該期望初始內容被拼寫檢查。在生成頁面之前,應該使用一些合適的工具對其進行檢查。

spellcheck attribute已被隱含地定義,並且在很多方面依賴於瀏覽器。它依賴於瀏覽器。 Firefox的運行在初始內容拼寫檢查過(但是,像其他的瀏覽器,僅支持不多的語言