2011-07-24 62 views
1

爲什麼在contentEditable文檔中,換行顯示爲空格或在Opera的Enter/Return鍵中消失?爲什麼換行符會變成空格或在Opera中爲contentEditable文檔消失?

試試這個演示:

<!DOCTYPE html> 
<html> 
<head> 
<title>contentEditable demo</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
<body contenteditable="true" spellcheck="true" dir="ltr"> 
<h1>Welcome to the contentEditable demo!</h1><p><span style="font-size: xx-large"> 
Try<span style="font-size: small">to type some text before the word "Try". You will see that random spaces are inserted before the word. Press Enter; you will see that the newline on the top disappears.</span></span></p></body> 
</html> 

戲曲11.50生成1074在Windows Vista上

這是一個Opera的bug?我沒有經歷過這個bug與Windows Internet Explorer 8中,Safari瀏覽器,谷歌Chrome或Firefox 5

回答

4

我想我可能已經發現,爲什麼這些鏈接:

[WHATWG]倒塌空白的CONTENTEDITABLE處理:

http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-June/032187.html

  • 在一行的末尾,NBSP使得硬道理長,所以當你上線打空間,硬道理可能跳到下一行。然後 當你輸入一個字母時,nbsp被轉換成一個常規空間,並且該字跳回到前一行。(我在Opera中觀察到了這種 IE和壁虎似乎有一些特殊的情況,以避免這種情況。WebKit的 與我以後會注意一個更一般的黑客避開它。)
  • 之前立即捲起的NBSP單詞將導致該單詞縮進,如果它恰好開始一行。壁虎似乎非常小心避免這種情況,但所有其他引擎有時會這樣做。
  • 長時間運行空間,其中一些是空格,一些是空行程,可能導致行開始時出現nbsp。因此,如果在任何原因下在兩個單詞之間鍵入 三個空格,某些情況下 第二個單詞可以縮進。這可能並不是用戶想要的。

錯誤13011 - [編輯]鼓勵作者使用 「空白:預包裝」 爲CONTENTEDITABLE = 「」 和.designMode =真:

https://www.w3.org/Bugs/Public/show_bug.cgi?id=13011

實施例如果用戶輸入 「foo bar」,其間有兩個空格,那麼該用戶將變爲 「foo  」或「foo  」。在第一種情況下,「foo  」 可能會換行到下一行,即使「foo」本身可能適合 當前行。在第二種情況下,如果「 酒吧」開始一行,則它會顯着縮進 。在頁面編輯

最佳實踐:

http://developers.whatwg.org/editing.html#best-practices-for-in-page-editors

在前一種情況下, 「yellow⍽」 可能換到下一行( 「⍽」 是這裏使用 代表即使「黃色」 單獨可能適合在行的末尾;在後一種情況下,「⍽ball」, 如果被纏繞到行的開頭,則將具有來自非破壞空間的可見縮進 。

相關問題