javascript - 无法用 javascript 填充输入
问题描述
我正在尝试使用 javascript填写https://account.protonmail.com/login上的输入。
首先导航到https://account.protonmail.com/login并在 devtools 中运行以下 javascript:
document.querySelector('#username').value = 'MyUser'
document.querySelector('#password').value = 'MyPassword'
并填写表格:
但是当我点击“登录”时,这些值就消失了:
单击“登录”时如何保留这些值?
解决方案
根据其源代码,您链接的 Proton 帐户页面基于 React。React(像许多其他框架一样)侦听特定事件以了解用户是否更改了表单字段中的值。
幸运的是,另一个 SO 线程中的回答者能够利用一个简单的函数来实现相同的功能,您可以重复使用它来完成字段并触发适当的事件和验证逻辑。您的代码将如下所示:
function changeValue(input,value){
var nativeInputValueSetter = Object.getOwnPropertyDescriptor(
window.HTMLInputElement.prototype,
"value"
).set;
nativeInputValueSetter.call(input, value);
var inputEvent = new Event("input", { bubbles: true });
input.dispatchEvent(inputEvent);
}
changeValue(document.querySelector('#username'), 'MyUser');
changeValue(document.querySelector('#password'), 'MyPassword');
这允许在最新版本的 Chrome 中的开发人员控制台中运行此代码时为我传递字段验证。
推荐阅读
- sql - 从原始查询中的周数获取周开始日期和周结束日期
- amazon-web-services - 如何配置我的 PUBLIC AWS 自定义域以解析为我的 VPC 配置的 lambda?
- ios - 处理组合中的错误(Swift、iOS)
- python - 匹配正则表达式中的行首(^ 返回空列表)
- python - 关键字“categorical_features”已弃用
- javascript - 如何在 React 中使用 Material-UI 覆盖 react-data-grid 样式
- java - 执行我用 JavaFX 编写的代码时出错
- java - 没有使用 Firebase 将数据导入我的回收站视图
- webpack - 在 svelte 中导入 `svelte-routing`
- javascript - Nest 无法解析 UsersService 的依赖关系