gpt4 book ai didi

javascript - document.getElementById 不返回 null,但也没有执行我想要的操作。 JavaScript 控制台没有错误

转载 作者:行者123 更新时间:2023-12-02 18:49:43 24 4
gpt4 key购买 nike

在本例中,我加载一个 paypal 页面,系统会提示我登录。一旦我登录,页面就会通过在 Paypal 端使用其他 JavaScript 来更改。在此转换中,地址不会发生变化,源代码也不会发生任何实质性变化。我正在尝试找到一种方法,让我的脚本在第一次单击后等待足够长的时间,以便能够获取之后加载的元素。我认为我可以使用以下命令相当简单地完成此操作:

document.getElementById("submitLogin").click();

window.onload = function() {
document.getElementById("continue").click();
};

执行脚本时,单击第一个按钮,页面会转换,但不会单击加载的第二个按钮。我的 JavaScript 控制台没有报告任何错误,表明它能够“获取”该元素。不知道为什么它不会点击它。

最佳答案

如果不出意外,您始终可以在某个时间间隔轮询是否存在“继续”元素:

function clickContinue() {
var button = document.getElementById("continue");
return button ? button.click() : setTimeout(clickContinue, 100);
}

document.getElementById("submitLogin").click();
clickContinue();

如果您选择这条路线,您可能需要包含一个故障保护装置,这样它就不会运行太长时间,以防发生意外情况。像这样的东西应该有效:

clickContinue.interval = 100; // Look for "continue" button every 0.1 second
clickContinue.ttl = 10000; // Approximate time to live: 10 seconds ~ 10,000 ms
clickContinue.tries = clickContinue.ttl / clickContinue.interval | 0;

function clickContinue() {
var button = document.getElementById("continue"),
interval = clickContinue.interval;
return button ? button.click() :
clickContinue.tries-- && setTimeout(clickContinue, interval);
}
// ...

不过,请查看 PayPal 的 API 文档,看看它们是否提供了设置回调来处理此问题的方法。这种轮询技术可能只能作为最后的手段使用。

关于javascript - document.getElementById 不返回 null,但也没有执行我想要的操作。 JavaScript 控制台没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956182/

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