簡體   English   中英

Firefox和IE上不同的插入符位置

[英]different caret position on firefox and IE

要重現此問題,請訪問http://jsfiddle.net/BsJ6V/並在開始body標記后鍵入任何字符(例如,如果鍵入h字符,則為<body>h )。

警報框將顯示插入符的位置。 當您在Firefox中運行它時,插入符位置為56 ,而在IE中運行時,插入符位置 為60 請問是怎么回事?

編輯 :: 更新鏈接

差異是因為IE將textarea中的每個換行符計算為兩個字符(CRLF或\\r\\n ),而Firefox將其視為單個LF( \\n )字符。

如果出現換行符,您的函數將無法在IE中獲得正確的插入符號位置。 要看到這一點,請在您的第一個jsFiddle示例中將插入標記放在文本區域的開頭,然后按回車幾次,然后嘗試輸入其中的空行。 要解決此問題,您可以使用我之前在Stack Overflow上發布的功能,或者如果您喜歡jQuery插件,那么我已經創建了一個用於處理文本區域選擇的功能: http : //code.google.com/p/ rangyinputs /

更新

請注意,jQuery的val()方法將瀏覽器之間的換行符差異標准化(在我看來,這是無濟於事的,因為發送到服務器的值未標准化),因此換行符始終為\\n 我的插件和您的函數都返回相對於textarea原始值屬性的插入符號位置,而不是jQuery的規范化值,因此,如果要使用插入符號位置來操作該值,則需要使用$textarea[0].value而不是$textarea.val()

您可以在這里看到這種差異: http : //jsfiddle.net/MyR7J/2/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM