繁体   English   中英

打开新标签页/窗口,然后关闭旧的标签页/窗口

[英]Open new tab/window and close old one

这是我当前的代码,但是closeWindow函数在新选项卡打开之前执行。

    $(document.body).append('<iframe width="500px" height="500px" id="pcl_frame" style="display:none;"></iframe>');
    $('#pcl_frame').attr('src', data['url']);
    $('#pcl_frame').load(function() {
        // Load page
        document.getElementById('pcl_frame').contentWindow.CreateCBTPlayer(data['code'],"new");

        // Close current windows after the above tab/window opens
        closeWindow(); // has a 2 second delay
}); 

有没有一种方法可以等待上面的命令首先打开新的选项卡/窗口,然后关闭用于打开新窗口的当前选项卡。

我也不能更改CreateCBTPlayer函数。

免责声明

我知道我在做什么不是很合逻辑,但是必须这样做才能绕开我必须使用的旧系统。

我不太确定,但是我认为您可以执行以下操作:

(function(old_window) { 
    $(new_window).load(function() {
         old_window.close();
    });
})(window);

外部自调用匿名函数用于将局部变量old_window绑定到当前窗口对象。 内部函数是一个闭包,捕获该绑定并关闭窗口。 此关闭绑定到新窗口的onload事件。 因此,在加载新窗口时,它将关闭当前窗口。

我不知道您要做什么,但是我猜想您必须在onload函数之后设置源以使其正确启动,并且由于不建议使用load()并且无论如何您都在使用本机对象,为什么不只是在普通js中这样做:

var iframe = document.createElement('iframe');
    iframe.width = '500px';
    iframe.height = '500px';
    iframe.id = 'pcl_frame';
    iframe.style.display = 'none'; //note that not all browsers load hidden content
    iframe.onload = function() {
        this.contentWindow.CreateCBTPlayer(data['code'],"new");
        closeWindow();
    }

$('body').append(iframe).attr('src', data['url']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM