打开新标签/窗口和关闭旧(Open new tab/window and close old one

2019-08-01 15:28发布

这里是我当前的代码,但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功能。

放弃

我知道我在做什么还不是很合乎逻辑,但它有许多工作要做,以绕开旧系统我有工作。

Answer 1:

我不能完全肯定,但我认为你可以做这样的事情:

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

外自我调用匿名函数被用于将本地变量绑定old_window到当前窗口对象。 内部函数是用于捕获结合和关闭窗口的封闭件。 这种封闭绑定到新窗口onload事件。 所以加载新窗口时,它会关闭当前窗口。



Answer 2:

我不知道你想做什么,但我猜你必须设置源在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']);


文章来源: Open new tab/window and close old one