Javascript 如何在导航到其他选项卡之前在函数中设置超时

Javascript 如何在导航到其他选项卡之前在函数中设置超时,javascript,Javascript,我想在函数导航到另一个选项卡之前设置一个特定的超时 somefunc: function() { PageFrame.goToTab('test', function(item) { if(!item.search){ return false; } //else do some stuff }, this); } 问题是当调用PageFrame.goToTab重定向到“#test”页面时,测试页面没有完

我想在函数导航到另一个选项卡之前设置一个特定的超时

somefunc: function() {
    PageFrame.goToTab('test', function(item) {
        if(!item.search){

            return false;
        }
        //else do some stuff
    }, this);
}
问题是当调用
PageFrame.goToTab
重定向到“#test”页面时,测试页面没有完全加载,因此我在
项上得到了一个未定义的搜索
,尽管它是在抛出错误后加载的。因此,我想为函数添加一个等待页面加载的超时,然后检查此条件:
if(!item.search){}


如何实现这一点?

正如Jaromand X所说,您应该使用一个事件来告诉您页面何时已完全加载,而不是设置一个超时。From“GlobalEventHandlers mixin的onload属性是窗口、XMLHttpRequest、元素等的load事件的事件处理程序,它在加载资源时激发。”

这意味着一旦窗口内容完成加载,将触发onload事件

要使用这样的事件,您必须使用assing和“事件处理程序”,这是一个在事件触发时运行的函数

在您的情况下,您应该这样做:

function somefunc() {
    PageFrame.goToTab('test', function(item) {
        if(!item.search){

        return false;
        }
        //else do some stuff
    }, this);
}

window.onload = somefunc;

因此,当onload事件触发时,“somefunc”将运行。您不需要编写window.onload=somefunc();因为指定为事件处理程序的是指向函数的指针。

等待页面加载的超时不是最佳做法-最好使用eventsFix
goToTab
,这样它在加载选项卡后才调用回调。@Barmar:更改goToTab不是一个好主意,因为它是多个用户使用的全局方法apps@Jaromanda 你有前男友吗?那也许你应该用其他方法。关键是应该有一个方法动态加载数据,它应该接受回调,这就是您可以访问
项.search
的地方。但这不会在执行func之前设置任何延迟时间。不确定window.onload如何帮助我在执行审阅队列中的条件之前完全加载页面:我可以请求您在源代码周围添加一些上下文吗。只有代码的答案很难理解。如果你能在你的文章中添加更多的信息,这将有助于询问者和未来的读者。
somefunc: function() {
      setTimeout(function() {
           PageFrame.goToTab('test', function(item) {
           if(!item.search){

               return false;
           }
           //else do some stuff
       }, this);
    }, 5000);
}