在处理元素单击事件期间,在循环内部调用window.open()

Call window.open() inside loop during handling of element click event

本文关键字:调用 内部 window open 循环 元素 处理 单击 事件      更新时间:2023-09-26

我正试图根据某些条件在循环内调用window.open()x次(target=_blank)。但它只打开一次新标签。我做错什么了吗?这是我的代码

$('#spogo_' + _sp.spid).button()
     .button('option', 
        {
             label : 'Go to',
             icons : {
                 primary : 'ui_icon_goto'
             }
        })
    .on('click', function(){
         var selRow = model._getSelectedRow($('#spt_' + this.id.split('spogo_')[1]).dataTable())[0];
         for(var i = 0 ; i < selRow.cells.length ; i ++){
             var cell = selRow.cells[i];
             if($(cell).hasClass('vdata_cell')){
                  window.open($(cell).attr('data'), '_blank');
             }
         }
    });

我试过调试它,发现if发生了多次,顺便说一句,在调试过程中,两个URL都没有打开。

编辑:啊,抱歉,弹出窗口被阻止了:D但现在一个url在新选项卡中打开,另一个在新窗口中打开,我该如何解决这个问题?

您只能指定'_blank',然后用户浏览器将决定它是在新选项卡中还是在新窗口中,并且您不能覆盖该"功能"。

您无法解决此问题,这是用户在浏览器中希望打开链接的位置的首选项。从可用性的角度来看,强迫用户在新窗口中打开链接也是不可取的

检查window.open的规范。编写window.open(url, '_blank')的方法是创建一个名为_blank的窗口,每次都在同一窗口中打开url。试着通过添加计数器或其他东西的数字来更改名称。

就在选项卡中打开与在窗口中打开而言,这是浏览器中的首选项,您无法控制它。