用輸入法打字時 input.value 被更改的情形

大家好!

日本 Mozilla 的加藤先生[1][2]提出了以下這個問題:

當你在一個文字框裡打字而且正用輸入法到一半的時候,如果 script 用更改到了
文字框的值,到底該取消輸入法打到一半的字然後改變文字框的內容呢?還是輸入
法或檔掉這個 script 呢?或是該發生什麼其他的事?

請大家玩玩看以下的 HTML 或其變形

<script>
function setvalue() {
  document.getElementById('test').value = "replaced";
}
</script>
<body onload="setInterval('setvalue()',2000)">
<input type="text" id="test"/>
</body>

在不同瀏覽器下在文字框裡打字看會發生什麼事。

一個類似的問題是,當文字框的文字更改時鍵盤指標應該跑到哪裡去的問題。這裡
我試了兩個瀏覽器:

- FF4.0b11下,如果值*沒有改變*則指標會停留在原處,改變的話指標會移到最後面。
- Safari 5下,不管怎麼樣,指標都會移到最後面。

歡迎補充,另外看看大家覺得怎麼樣的行為才是合理的。

[1]
http://lists.w3.org/Archives/Public/www-international/2011JanMar/thread#msg127
[2]
http://lists.w3.org/Archives/Public/public-webapps/2011JanMar/thread#msg694

此致
Kenny, W3C
Twitter: http://twitter.com/kanghaolu
Plurk: http://www.plurk.com/kennyluck

Received on Monday, 28 February 2011 23:22:51 UTC