我正在使用以下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);
});