检查是否在JavaScript中加载了网页?

时间:2015-11-13 03:18:17

标签: javascript jquery html

所以我有一个setInterval选择一个输入,然后用click()提交表单。现在我的问题是我的功能点击按钮太多次了。我尝试添加一个布尔值来检查它是否已被点击。没有骰子,页面不会加载。由于某些奇怪的原因,提交按钮有时无法正常工作。我需要间隔为100 - 1000只是因为页面超时或滞后。如何在页面尝试加载时检查以确保它不会再次单击?如果间隔大于1000,代码可以正常工作,但我需要速度。

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

3 个答案:

答案 0 :(得分:0)

试试这个:

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);
}
}

答案 1 :(得分:0)

已经有好几年了,代码已经不复存在了,但是在重新讨论了这个问题之后,我觉得我可以为那些遇到了元素不存在的问题的人提供一些见识。

此问题的解决方案是等待元素通过当时的ajax调用动态完成加载。加载元素后,您现在可以单击该元素。

实际上,这是我个人在创建自动化测试时面临的问题,您会在很多硒代码中看到。虽然,我上面的代码不是硒,在当时只是一个普通的脚本。考虑将来使用硒或puppeteer之类的库进行任何将来的自动化测试。

答案 2 :(得分:-1)

您可以使用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发布到另一个问题中,例如"为什么我的表单有时只提交?"让我们试着理解其中的原因。它肯定会出于某种原因发生:)