$(window.document).ready(function(){...}还没准备好?

时间:2018-02-10 04:19:56

标签: javascript jquery

我正在使用以下window.open(url与当前页面的主机/域相同):

function openWindow() {
   var fswin = window.open(url, msg);
   $(fswin.document).ready(function () {
      setWindowTitle(fswin, msg)   //set window title
   });
}

有时我收到错误null / undefined尝试设置下面的title或fs_date值:

function setWindowTitle(fswin, fs_date) {
    if ((fswin.document.title !== undefined) && (fswin.document.getElementById("fs_date") !== undefined))
    {
        fswin.document.title = fs_date;
        fswin.document.getElementById("fs_date").value = fs_date;
    }
    else //if not loaded yet wait a 50ms then try again
    {
        setTimeout(setWindowTitle, 50); //wait 50ms and check again
    }
}

这是一种间歇性的错误,有时不是其他时间; 在我看来,我不能使用setTimeout(setWindowTitle,50),因为它不会将require参数传递给setWindow(fswin,fs_date)?也许这是问题,它有时会触及setTimeout(...),因此不会传入fswin和fs_date?

我做错了什么,如何解决?

1 个答案:

答案 0 :(得分:2)

.ready()方法并不关心它所绑定的元素,它始终在当前文档上运行。

load事件用于其他元素。

$(fswin).on("load", function() {
    setWindowTitle(fswin, msg);
});