检查页面是否正在加载JavaScript?
因此,我有一个setInterval,它选择一个输入,然后通过单击()提交表单。现在我的问题是我的函数点击按钮的次数太多了。我尝试添加一个布尔值来检查它是否被单击。没有骰子,页面不会加载。出于某种奇怪的原因,提交按钮有时不起作用。我需要的间隔在100-1000只是为了以防万一的页面超时或滞后。如何检查以确保在页面尝试加载时不会再次单击?如果间隔超过1000,代码可以正常工作,但我需要速度检查页面是否正在加载JavaScript?,javascript,jquery,html,Javascript,Jquery,Html,因此,我有一个setInterval,它选择一个输入,然后通过单击()提交表单。现在我的问题是我的函数点击按钮的次数太多了。我尝试添加一个布尔值来检查它是否被单击。没有骰子,页面不会加载。出于某种奇怪的原因,提交按钮有时不起作用。我需要的间隔在100-1000只是为了以防万一的页面超时或滞后。如何检查以确保在页面尝试加载时不会再次单击?如果间隔超过1000,代码可以正常工作,但我需要速度 var pickSize = setInterval(function(){
var pickSize = setInterval(function(){
if(window.location.href.indexOf("/website/") == -1 && window.location.href.indexOf("/page.php") == -1) {
if($('input[value="236"]').attr("checked", true)) {
$('.Add').click();
}
}
}, 1000);
试试这个:
var body = document.getElementsByTagName('BODY')[0];
// CONDITION DOES NOT WORK
if ((body && body.readyState == 'loading')) {
DoStuffFunction();
} else {
// CODE BELOW WORKS
if (window.addEventListener) {
window.addEventListener('load', DoStuffFunction, false);
} else {
window.attachEvent('onload',DoStuffFunction);
}
}
您可以使用
onbeforeunload
事件检查页面是否已开始导航到其他页面:
var interval = setInterval(function(){
if(window.location.href.indexOf("/website/") == -1 && window.location.href.indexOf("/page.php") == -1) {
if($('input[value="236"]').attr("checked", true)) {
$('.Add').click();
}
}
}, 1000);
window.addEventListener('beforeunload', function() {
clearInterval(interval);
console.log('Started to navigate away...');
});
但是,看起来您需要修复原因,而不是结果。将你的HTML和JS发布到另一个问题中,比如“为什么我的表单只是偶尔提交?”让我们试着理解原因。这确实是因为某些原因而发生的:)已经很多年了,代码已经消失很久了,但是在重新审视这个问题之后,我觉得我可以为那些对元素不存在有问题的人提供一些见解 这个问题的解决方案是等待元素通过ajax调用动态加载完成。加载元素后,您现在可以单击该元素
这实际上是我个人在创建自动化测试时面临的问题,您将在许多selenium代码中看到。不过,我上面的代码不是selenium,当时只是一个常规脚本。考虑使用一个像硒或傀儡之类的库来进行任何未来的自动化测试。将代码封装在<代码> $(文档)中。准备好(函数){ /*代码在这里*/)在这种情况下,
setInterval
有什么意义?setInterval用于在项目不可用或超时的情况下重新尝试。我过去没有这个问题,setInterval会在页面开始重定向时立即停止。我的setInterval现在像发垃圾邮件一样疯狂,即使我抛出“window.location=”;“您希望使用setTimeout
,但它可能不可预测,您可以添加clearInterval(pickSize)
单击后将部分代码添加到您的代码中。更好的方法是使用窗口。实际使用Javascrypt异步加载事件。等待可以执行类似Selenium的代码。我为我们在工作中使用的Web应用程序构建了一个完全SPA的自动化程序(即无url更改)因此,我必须完全依赖于存在的元素。我必须构建一个用vanilla JS编写的自定义插件,模拟Selenium真正有用的主要功能,如预期条件。我可以将此代码包含到我的脚本中,并且我可以像使用Selenium一样自动化。也许它对某些人有用: