亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打開常量新標簽

打開常量新標簽

隔江千里 2023-04-27 16:09:48
var myWindow;let urls = ["https://stackoverflow.com", "https://stackexchange.com/"];let counter = 0;let openWindow;function openWin(url) {    openWindow = window.open(url, "_blank");}function closeWin(){    openWindow.close();}setInterval(function(){    if(openWindow) closeWin();    openWin(urls[counter]);    counter++;}, 10000)即使在打開所有網址后,這也會繼續打開新標簽頁。如何防止打開任何其他選項卡然后只打開 url。當我加載此網址時,它會打開 4 個網址,但之后會打開 N 個空白選項卡。
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

您的解決方案很棒,唯一的問題是除非setInterval您取消呼叫,否則呼叫將永遠無法完成。


這個解決方案的問題是它涉及一些副作用,以后調試起來會很乏味。


我可以提出一個涉及較少副作用并利用一些新概念(例如 Promises 和 Async/Await 上下文)的解決方案。


"use strict";


function sleep(seconds) {

? ? return new Promise(function(resolve) {

? ? ? ? window.setTimeout(resolve, seconds * 1000);

? ? });

}


async function openAndCloseAfter(seconds, url) {

? ? const openWindow = window.open(url, "_blank");

? ? await sleep(seconds);

? ? openWindow.close();

}


async function openAll(urls) {

? ? for (const url of urls) {

? ? ? ? await openAndCloseAfter(10, url);

? ? }

}


openAll([

? ? "https://stackoverflow.com",

? ? "https://stackexchange.com"

]);

我會讓您注意進行必要的運行時類型檢查,以防止使用錯誤的參數類型調用這些函數。


查看完整回答
反對 回復 2023-04-27
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

嘗試這個


    var myWindow;

    let urls = ["https://stackoverflow.com", "https://stackexchange.com/"];

    let counter = 0;

    let openWindow;

    function openWin(url) {

        openWindow = window.open(url, "_blank");

    }

    function closeWin(){

        openWindow.close();

    }

    setInterval(function(){

        if(openWindow) closeWin();

        if((counter) == urls.length) return

        openWin(urls[counter]);

        counter++;

    }, 1000)


查看完整回答
反對 回復 2023-04-27
  • 2 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號