回答
Have a look at this piece of code:
var editable = $(document.getElementById('edit').contentWindow.document);
editable.attr('designMode', "on").keyup(function(){
var length = $(this).find('body').children('br, p, div').length;
if($(this).find('body').html().length && !length){
length = 1;
}
$('#lc').text(length);
});
下面是測試的各種瀏覽器的行爲:
- 火狐3.6:
<br />
標籤附加到形成換行符。在開始時,沒有<br />
,而在第一個換行符之後,在當前光標位置之前添加一個,而在 之間添加一個
- Chrome:
<div>
用於包含每一行。<br />
用於空行。第一行不包裝 - IE 8兼容性:
<p>
用於包含每一行。
課程:請勿使用contentEditable
或designMode
!這種行爲是非常不一致的,對於這種情況來說毫無用處。當然你可以用黑客來解決這個問題,但是當新的瀏覽器出來時會發生什麼?你必須保持這種狀態直到時間結束!
你建議我做什麼而不是使用contentEditable或designMode? – David 2010-09-27 04:50:46
@David這取決於你在做什麼。如果你需要WYSIWYG編輯器,那麼完整的軟件包已經在那裏了,比如TinyMCE和其他軟件。如果你需要一個純文本編輯器,那麼就使用'textarea'!或者,如果您需要所見即所得,請認真考慮使用諸如Markdown之類的東西,因爲無論您選擇哪一個產生的HTML,幾乎總是垃圾 – 2010-09-27 05:02:27
...或者查看[CodeMirror](http://codemirror.net/)一個代碼編輯器... – 2010-09-27 05:09:11
這是一個很好的開始:http://jsfiddle.net/ysgEf/3/
它返回錯誤的行號,但代碼正在工作,現在比沒有好。
知道了這一點:跨瀏覽器的實現是不同的!從iframe的內容中查找行號不是一項簡單的任務!
** 編輯 **
基於Yi Jiang的回答是:
var editable = $(document.getElementById('edit').contentWindow.document)
.find('body').css({'overflow':'auto', 'white-space':'nowrap'}).end();
editable.attr('designMode', "on").keyup(function(){
var length = $(this).find('body')[0].childNodes.length;
$('#lc').text(length);
});
這也算個文本節點,而不是JQuery的返回。並且也不會包裝周圍的線條。
請在您的答案中包含代碼。此外,這種情況很容易解決:「輸入b進入」現在回到第一行輸入任何內容並點擊「輸入」。 – 2010-09-27 04:20:35
@Peter Ajtai,看編輯 – 2010-09-27 11:23:03
- 1. 如何在代碼編輯器中彈出jquery窗體編輯
- 2. Symbian S60代碼編輯器
- 3. 僞代碼編輯器
- 4. wysiwyg編輯器 - 與代碼
- 5. 代碼編輯器API(行號)和代碼熒光筆
- 6. pyqt中的代碼編輯器示例
- 7. 基於Web的HTML代碼編輯器
- 8. 具有intellisense代碼編輯器的ANTLR4
- 9. 帶lesscss支持的代碼編輯器?
- 10. 免費的sql代碼編輯器?
- 11. 理想的代碼編輯器
- 12. WYSIWYG - 驗證源代碼的編輯器
- 13. C#中的代碼編輯器
- 14. ASP.NET的代碼編輯器控制
- 15. 微小的MCE v2.1代碼編輯器
- 16. 是否有jQuery的源代碼編輯器?
- 17. 是否有支持html和jQuery代碼完成的編輯器?
- 18. C#編寫代碼編輯器問題
- 19. 的Windows Phone:編輯代碼
- 20. 編輯代碼中的Validation.ErrorTemplate
- 21. vb.net/C#帶顏色編碼的代碼編輯器
- 22. 用於C#代碼的模擬代碼編輯器程序
- 23. Visual Studio代碼中留下的行號編輯器邊距消失代碼
- 24. Intellij Idea代碼編輯器右邊的行
- 25. 如何在vs2008的代碼編輯器中獲取行號?
- 26. PHP編輯器/編譯器/不管,顯示在我的代碼
- 27. 哪個Javascript代碼編輯器支持純文本行編號?
- 28. Java代碼編輯
- 29. jQuery的數據表編輯一行
- 30. 編輯器中的jquery for
keyup事件甚至沒有爲我開火....讓工作第一;) – mpen 2010-09-27 04:05:30
請在您的問題中包括代碼。如果這些網址停止工作,這將不是一個非常有用的問題。 – 2010-09-27 04:21:19