gpt4 book ai didi

javascript - onclick 与 onfocus - 输入文本选择行为不同。为什么?

转载 作者:太空狗 更新时间:2023-10-29 16:37:30 25 4
gpt4 key购买 nike

我看到,当我借助“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>

我多次重复以下实验。

  1. 单击文本框外的某处以使文本框模糊。
  2. 单击文本框以聚焦文本框。

我希望每次在第 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。通过 onclick 调用 select() 函数,我得到了预期的结果。这是一个演示 URL,它使用“onclick”显示所需的结果:http://jsfiddle.net/5EZwR/

你能帮我理解为什么我用“onfocus”没有得到预期的结果,而用“onclick”却得到了预期的结果吗?

最佳答案

我认为问题在于 .select() 做了两件事情:它将选择范围设置为包括所有文本,它使该领域得到关注。浏览器似乎不喜欢重复选择,尽管 Chrome 和 Firefox 的行为不同。

如果将其更改为:

text.setSelectionRange(0, 10000);

然后它在 Firefox 中工作。 (我认为它对于 Internet Explorer 来说一定是不同的。)

编辑This Stackoverflow question有一个很好的答案(Dimitrov 先生的)应该适用于所有浏览器。

关于javascript - onclick 与 onfocus - 输入文本选择行为不同。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com