如何在每个函数中打开多个URL?

时间:2013-06-10 23:31:24

标签: javascript browser tabs

我已经使用此代码获取所有链接并在新标签中打开它。

    var OptionBarSelector = "div.tCenter";
    var button = "<input id='allTabs' type='button' class='bold' style='width: 140px;'value='open all in new tab'/>";
    var host = "http://rutracker.org/forum";
    var tableId = "tor-tbl";
    var rowHref = ".tCenter.hl-tr td.row4.t-title a";  
$(function(){

    console.log("Rutracker search results in All Tab loaded");
    $(OptionBarSelector).append(button);  

    $("#allTabs").on('click',function(){

      $("#"+tableId+" tr"+rowHref).each(function(index,item){
          var link = host + $(this).attr("href").substr(1);
          window.open(link,"_newTab");     
    });
    });
});

HTML:

<td class="row4 med tLeft t-title" style="max-width: 669px;">
        <div class="wbr t-title" style="max-width: 669px;">
                        <a data-topic_id="534143" class="med tLink hl-tags bold" href="./viewtopic.php?t=534143">Text<span class="brackets-pair">[2001-2013, PDF, RUS]</span>Text 2</a>
        </div>
        <div id="tg-534143" class="t-tags"><span class="tg">Journal</span></div>
    </td>

但是只打开第一个链接。怎么解决? 我希望保持当前标签处于活动状态。

更新 我改变了代码,但现在这个代码只在新选项卡中打开第一个链接,在弹出窗口中打开另一个链接。如何在新标签中打开其他链接而不是弹出窗口?

    var OptionBarSelector = "div.tCenter";
    var button = "<input target='_blank' id='allTabs' type='button' class='bold' style='width: 140px;'value='open all in new tab'/>";
    var host = "http://rutracker.org/forum";
    var tableId = "tor-tbl";
    var rowHref = ".tCenter.hl-tr td.row4.t-title a";  
$(function(){
    $(OptionBarSelector).append(button);

    var allLinks = new Array();
       $("#"+tableId+" tr"+rowHref).each(function(index,item){
          var link = host + $(this).attr("href").substr(1);
          allLinks.push(link);
    });
    var varAllOpen = "";    
    for(var i = 0; i < allLinks.length; i++)
    {
        varAllOpen += "window.open('"+allLinks[i]+"','"+i+"');";
    }   
    console.log(varAllOpen);
    $("#allTabs").attr("onclick",varAllOpen);
    console.log("Rutracker search results in All Tab loaded");
});

1 个答案:

答案 0 :(得分:1)

你的代码中有一些可疑的JS,但主要的问题是你正在构建一个字符串,然后执行它就像它是一个函数一样。不解决不存在的问题:如果要在单击时触发函数,将函数绑定到click事件:

$(function(){
  $(OptionBarSelector).append(button);

  var links = [];      // don't use new Array()

  $("#"+tableId+" tr"+rowHref).each(function() {
    links.push(host + this.href.substring(1));
  });

  // actually bind a click handler function,
  // don't use strings attributes
  $("#allTabs").click(function() {
    links.forEach(function(link) {
      window.open(link);
    });
  });
});