从Chrome扩展程序自动填充输入不起作用

时间:2017-11-07 13:57:47

标签: javascript google-chrome google-chrome-extension

我尝试使用简单的Chrome扩展程序,但我遇到了障碍。
我试图自动填写登录表单(用户名和密码)。 (作为备份,以防铬自动填充功能被禁用)
我设法将一个脚本注入到页面中,我可以在console.log中输入我的目标输入。但它不会设定价值。

的manifest.json

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";

autofill.js

def ActualValue= resholder.getNodeValues("//*:Array1//*:"+context["parameter"]).toString()

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

显然,问题在于Chrome的自动填充功能。如果密码,将自动填充属性设置为offfalsenew-password对我不起作用。 Chrome似乎忽略了这一点 Disabling Chrome Autofill

我的解决方案是在执行代码之前添加一个小超时。它远非理想,但它确实有效。

setTimeout( () => {
    usernameInput.value = "username";
    passwordInput.value = "password"
}, 500 );

答案 1 :(得分:0)

问题几乎可以肯定是您需要等待文档加载事件。实际上,在页面上加载元素之前,您的脚本已经完成。

制作你的autofill.js

console.log( "Script properly injected into page" );
document.addEventListener('DOMContentLoaded', function () {
    let usernameInput = document.querySelector( 'input[name="username"]' );
    let passwordInput = document.querySelector( 'input[name="password"]' );

    console.log( usernameInput );

    usernameInput.value = "test";
});