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

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


有时我会在尝试将标题或fs_date值设置为以下错误时得到null / undefined的错误:

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吗?

我在做什么错,我该如何解决?

最佳答案

.ready()方法不在乎它绑定到什么元素,它始终在当前文档上运行。

load事件用于其他元素。

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

10-06 00:06