我有一个带有输入字段和一个按钮的组件,除非在输入字段中输入正确的值,否则该组件将被禁用。这工作正常,但是当 chrome 在页面加载时自动完成这些值时,状态不会改变,因此按钮保持禁用状态。如果您在表单内单击或更改值,状态会正确更改。
组件加载时如何从自动完成中获取值?自动完成不会触发 onChange 或 onBlur 事件,并且 autocomplete="off" 也不起作用。 (而且我不想关闭自动完成功能)
我最近在处理登录页面时遇到了这个问题。经过一番研究后,我发现这个问题 https://github.com/facebook/react/issues/1159#issuecomment-506584346ReactJS github 上有报道。引用关键部分:
如果我们能够在页面加载后访问自动填充的值,那么编写恶意代码来提取用于网络钓鱼的表单上的信息将变得非常容易。不给用户反应的机会。可能是浏览器忽略 autocomplete="off" 的部分原因。
为了克服这个问题,我们需要:
- 接受这样一个事实:当 DOM 节点挂载时,我们不会(也永远不会)访问自动填充的值
- 接受浏览器带来的安全问题
tl;dr - 这是出于安全原因而故意的,最好在提交时验证输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)