我正在尝试使用简单的Chrome扩展程序,但遇到了麻烦。
我正在尝试自动填写登录表单(用户名和密码)。 (作为备份,以防禁用Chrome自动填充功能)
我设法将脚本注入到页面中,并且可以console.log输入我定位的输入。但这不会设置值。
Manifest.json
{
"manifest_version": 2,
"name": "Test Extension",
"description": "Test Extension",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "index.html"
},
"content_scripts": [
{
"matches": [ "*://*.domain.net/*" ],
"js": [ "autofill.js" ]
}
],
"permissions": [
"tabs",
"*://*.domain.net/*"
]
}
autofill.js
console.log( "Script properly injected into page" );
let usernameInput = document.querySelector( 'input[name="username"]' );
let passwordInput = document.querySelector( 'input[name="password"]' );
console.log( usernameInput );
usernameInput.value = "test";
我在这里想念什么?
最佳答案
显然,问题出在Chrome的自动填充功能。如果没有密码,请将autocomplete属性设置为off
,false
或new-password
。 Chrome似乎忽略了这一点。
Disabling Chrome Autofill
我的解决方案是在执行代码之前添加一个小的超时。这远非理想,但可行。
setTimeout( () => {
usernameInput.value = "username";
passwordInput.value = "password"
}, 500 );