延期获胜'我没有正确提交表单,但控制台会的

Extension won't submit form correctly, but console will

本文关键字:表单 提交 控制台 获胜      更新时间:2023-09-26

我正在尝试创建一个扩展,一旦它检测到我没有登录,就会将我登录到网站-忽略我的background.js现在没有这样做的事实,这不是问题所在。-我试图登录的网站已经通过我的Chrome密码在字段中填写了我的用户名和密码。脚本所要做的就是单击登录按钮。

从本质上讲,它似乎是有效的,除了它没有登录。每当脚本试图登录时,我都会收到我的用户名/密码不正确的消息。当我通过控制台执行脚本而不是通过background.js注入脚本时,它可以完美地工作。

background.js

chrome.tabs.onUpdated.addListener(function(id, info, tab){
    if (tab.status !== "complete"){
        return;
    }
        chrome.tabs.executeScript(null, {"file": "login.js"});
});

login.js(表单id为loginForm

document.getElementById("loginForm").submit();

感谢您的任何帮助。谢谢

我不知道为什么用Chrome保存的帐户信息提交表单不起作用,但我做了一个变通办法,让用户在使用扩展之前保存他的帐户信息。

popup.html

<!DOCTYPE html>
<html>
<head><title>Such Activity Options</title></head>
<body>
Username
<label>
  <input type="text" id="username">
 </label>
<br>
Password
<label>
  <input type="password" id="password">
 </label>

<div id="status"></div>
<button id="save">Save</button>
<script src="options.js"></script>
</body>
</html>

options.js

function saveAccount() {
  var username = document.getElementById('username').value;
  var password = document.getElementById('password').value;
  chrome.storage.sync.set({
    userName: username,
    passWord: password
  }
}

然后注入这个脚本来读取它们,并在提交之前将它们设置为表单的值

function clickLogin() {
        document.getElementById("loginForm").submit();
}
function enterLoginInfo() {
  chrome.storage.sync.get({
    userName: 'username',
    passWord: 'password'
  }, function(items) {
    document.getElementById('usernameLogin').value = items.userName;
    document.getElementById('passwordLogin').value = items.passWord;
  });
        delay = Math.floor((Math.random() * (360000)) + 30000);
        setTimeout(function(){clickLogin()}, delay);
}
enterLoginInfo();