Window.open打开2个相同的窗口

时间:2013-01-31 17:20:35

标签: javascript jquery

我有以下html / jquery代码,应该打开一个新页面,但是打开2:

$('.div_link').live('click', function(){
    window.open($(this).attr('url'), '_blank', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
});

<div class="div_link" url="/test/as/8888888-888">8888888-888</div>

所以,一切都运行正常,除了我得到两个具有完全相同内容的新窗口。  我看到有人建议在onclick事件中返回false有什么关系,但我认为不是这里的情况。

另外,我尝试过这样的事情:

var handler = window.open(...);

修改 尝试了gdoron建议的相似内容但是它没有打开任何窗口,并且没有触发click事件。

$('div.div_link').on({
    click: function(){
        window.open($(this).attr('url'), '_blank','toolbar=no,resizable=yes,location=yes,menubar=yes');
        return false;
}});

3 个答案:

答案 0 :(得分:3)

导致这种情况的原因是什么:

  1. 您订阅了两次。
  2. 您点击两次。
  3. 您有两个嵌套的div,其中包含类div_link和事件气泡。
  4. 关于最后一个选项,请使用on代替不推荐使用的(1.7) - 删除(1.9)live函数:

    $('#containerId').on('click', '.div_link', function(){
        window.open($(this).attr('url'), '_blank', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
        return false;
    });
    

    on不同,您可以停止live中的冒泡。

答案 1 :(得分:0)

我也遇到了同样的问题,我通过给第二个参数一个固定的名称而不是使用_blank来解决。 含义如下:

$('.div_link').live('click', function(){
    window.open($(this).attr('url'), 'myFixedName', 'toolbar=no,resizable=yes,location=yes,menubar=yes');
});

此解决方案不会阻止双击,但会产生所需的行为。 我希望它能对某人有所帮助。

答案 2 :(得分:-1)

删除第二行的“ _blank”。它解决了我同样的问题。