首页 > 解决方案 > 在同一个新标签 javascript 中打开多个 url,然后停止最后一个

问题描述

我使用这个脚本在弹出窗口中打开多个 url


<script type="text/javascript" >
  var targets = [                          //Place target URL here

        'https://www.google.com', 
      'https://www.bing.com/',
            'https://www.yahoo.com/'

    ];

    var iTarget;

    function nextTarget(){
       affiliate = window.open( targets[iTarget], 'target','');
        if( ++iTarget >= targets.length ) {
            iTarget = 0;
        }
    }

    function showMiniPop() {
        iTarget = 0;
        nextTarget();
        setInterval( nextTarget, 3000 );   //time interval here 3000 = 3 Sec
    }
</script>

这会在弹出窗口中打开 3 个 url,每 3 秒旋转一次

我想保持 LAST 打开(在我的示例中为 yahoo.com)。你能帮我吗 ?

标签: javascriptpopup

解决方案


尝试这样的事情:

var targets = [                  //Place target URL here
      'https://www.yahoo.com/',
      'https://www.google.com', 
      'https://www.bing.com/'
    ];

    var iTarget;
    var finishedIteratingAllElements = false;
    var newTab = false;

    function nextTarget(){
        var getLastItem = targets.slice(-1);
        if (targets.slice(0) === targets[iTarget] && !finishedIteratingAllElements) {
            // here we open the first time => yahoo
            yahooAlreadyOpened = true;
            affiliate = window.open( targets[iTarget], 'target','');
        }
        if (targets.slice(0) !== targets[iTarget] && !newTab) {
            // open next tabs in a new tab if not yahoo and we are not yet in new tab
            affiliate = window.open( targets[iTarget], '_blank','');
            newTab = true;
        } else {
            // we have new tab, so open in same
            affiliate = window.open( targets[iTarget], 'target','');
        }
        if (targets.slice(0) !== targets[iTarget] && finishedIteratingAllElements) {
            // if we iterated all elements, then those who are not yahoo, open in same tab
            affiliate = window.open( targets[iTarget], 'target','');
        }
        if( ++iTarget >= targets.length ) {
            iTarget = 0;
        }
        if (getLastItem === targets[iTarget]) { 
            finishedIteratingAllElements = true;
        }
    }

    function showMiniPop() {
        iTarget = 0;
        nextTarget();
        setInterval( nextTarget, 3000 );   //time interval here 3000 = 3 Sec
    }
    showMiniPop();


推荐阅读