我看到当我在“onfocus”功能的帮助下在文本框中选择文本时,我没有得到我期望的行为。
这是演示网址:http: //jsfiddle.net/BquZz/
代码副本如下:
<!DOCTYPE html>
<html>
<head>
<title>Select all</title>
<script type="text/javascript">
var text;
var log;
function select()
{
text.select();
log.innerHTML += ' - select';
}
window.onload = function() {
text = document.getElementById('text');
log = document.getElementById('log');
log.innerHTML = 'start';
text.onfocus = select;
}
</script>
</head>
<body>
<input type="text" id="text" readonly="readonly" value="hello, world">
<div id="log">
</div>
</body>
</html>
我多次重复以下实验。
- 单击文本框外的某处以模糊文本框。
- 单击文本框以聚焦文本框。
我希望每次在第 2 步结束时,都应该选择文本框中的字符串“hello, world”。然而,这不是我观察到的。在 Debian GNU/Linux (Wheezy) 上使用 Iceweasel 11.0,在替代实验结束时“hello, world”未被选中。在剩下的实验中,有时我看到字符串“hello, world”完全被选中,有时,部分被选中。在 Debian GNU/Linux (Wheezy) 上使用 Chrome 18.0.1025.33 beta 时,我很少得到想要的结果。大多数时候,没有选择任何内容。
我知道解决这个问题的方法。更改text.onfocus = select
为text.onclick = select
。使用select()
调用的函数onclick
,我得到了预期的结果。这是一个演示 URL,它使用“onclick”显示所需的结果:http: //jsfiddle.net/5EZwR/
你能帮我理解为什么我没有用'onfocus'得到预期的结果,但我用'onclick'得到了它吗?