尝试在window.open之后从父窗口调用子窗口函数

时间:2016-12-12 23:41:22

标签: javascript function childwindow

我正在尝试调用以下函数来创建一个新窗口弹出。无论如何,我正在调用它在chrome中崩溃父窗口。

我观察到:直到openDoctorDetails函数被执行,子窗口根本没有被加载。因为doctorDetailsPage.populateDoctorDetails从未定义过。因此,它将进入无限循环。

var openDoctorDetails = function(physicianId) {
    var time1 = new Date();
    var doctorDetailsPage = window.open('PhysicianDetails.html', '_blank',
        'resizable=yes; width=1000; height=1500; top=50; left=50');
    var times = 0;
    while (!doctorDetailsPage.populateDoctorDetails) {
    setTimeout(function() {
        times++;
    }, 500);
    }
    doctorDetailsPage.populateDoctorDetails(physicianId);
    doctorDetailsPage.focus();
    console.log("Time taken for this openDoctorDetails:" + (new Date() - time1)
        + "  " + times);
};

1 个答案:

答案 0 :(得分:0)

在子窗口中实现onload事件处理程序,该窗口在父窗口中调用physicianDetailsWindowLoadedHandler方法。不要使用setTimeout。只需打开子窗口,让直接回调以事件驱动的方式处理所有内容。

这样,代码将在子窗口加载后在子窗口中运行,而不必创建自己的等待循环,如果子窗口需要来自父窗口的信息,它可以通过调用方法来访问它通过window.parent属性在父级中。

相关问题