我在Chrome和Safari之间遇到了这种奇怪的行为差异。如果标签中有输入和按钮,单击该按钮将使输入在Safari中获得焦点,但在Chrome中则不会。
我发现将e.preventDefault()
添加到按钮点击处理程序会使Safari的行为与Chrome相同。
这是最小的代码示例:
<label>
<input />
<button>add</button>
</label>
这是Chrome / Safari中的错误还是一些记录在案的“功能”?这个HTML应该表现的“正确”方式是什么?
不知道为什么你的按钮位于标签内。输入和按钮都是可操作的(可以在其上执行某些操作)元素。默认情况下,可操作元素在浏览器中获得焦点所以,你应该将两个元素分开。标签可能被包裹或无法用输入包裹,请参阅“Is it better to wrap the label tag around a form item or use the "for" attribute in HTML?了解详情。
<body>
<label>
<input />
</label>
<button>add</button>
</body>