gpt4 book ai didi

javascript - Vanilla JavaScript 代码在控制台中运行,但不能在 (greasemonkey) 脚本中运行

转载 作者:行者123 更新时间:2023-11-30 20:36:59 24 4
gpt4 key购买 nike

我在 Windows10 家庭版中使用最新的 Firefox 和 Greasemonkey。

我在 livedns.co.il 创建了一个帐户, 这是一个以色列域名注册。然后我登录了。

登录到个人概览区后,我尝试通过以下代码将自己移动到域管理区:

window.location.href = "https://domains.livedns.co.il/DomainsList.aspx";

它在控制台中有效,但在 greasemonkey 脚本中无效。

我想我可能需要在脚本中使用 setTimeout():

setTimeout(()=>{
window.location.href = "https://domains.livedns.co.il/DomainsList.aspx";
}, 1000);

但这段代码也只能在控制台中工作。

重现步骤

创建帐户并登录后,这是我使用的原始模式:

// ==UserScript==
// @name livednsAutoLogin
// @include https://domains.livedns.co.il/Default.aspx
// ==/UserScript==

console.log(window.location.href); // This fails in Greasemonkey if the code below exists; If I'll delete all code below, it will succeed in Greasemonkey;

document.querySelector("#ctl00_TopLoginBox1_txtUname").value = "myUsername";
document.querySelector("#ctl00_TopLoginBox1_txtPassword").value = "myPassword";
document.querySelector("#ctl00_TopLoginBox1_btnLogin > .FltRt").click();

setTimeout(()=>{
window.location.href = "https://domains.livedns.co.il/DomainsList.aspx";
}, 250);

只需更改用户名和密码,然后进行测试。

我的问题

是什么让普通的 JavaScript 代码在控制台中工作,而不是在 (greasemonkey) 脚本中工作?特别是,为什么更改文档位置的 href 只能在控制台中起作用,而不能在 Greasemonkey 脚本中起作用?

我不知道在这种情况下如何调试,因为我在运行脚本时没有在控制台中看到错误。

最佳答案

从错误的 url 运行代码时我有一个逻辑错误(我应该确保我在 https://domains.livedns.co.il/Main.aspx 中才能成功运行代码。我通过使用 if-then 条件语句修复了该问题(我会发现使用这种方式是否存在任何重大安全威胁)。

请注意我是如何更改 @include 以及如何更丰富地使用 URL。

// ==UserScript==
// @name livednsAutoLogin
// @include *livedns.co.il/*
// ==/UserScript==

if ( document.location.href == "https://domains.livedns.co.il/" ) {
document.querySelector("#ctl00_TopLoginBox1_txtUname").value = "myEmail";
document.querySelector("#ctl00_TopLoginBox1_txtPassword").value = "myPassword";
document.querySelector("#ctl00_TopLoginBox1_btnLogin > .FltRt").click();
}

if ( document.location.href == "https://domains.livedns.co.il/Main.aspx" ) {
console.log(window.location.href);
document.location.href = "https://domains.livedns.co.il/DomainsList.aspx"
}

关于javascript - Vanilla JavaScript 代码在控制台中运行,但不能在 (greasemonkey) 脚本中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49720005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com