簡體   English   中英

為什么遞歸調用不會觸發窗口onload事件?

[英]Why window onload event doesn't get triggered on recursive call?

打開新選項卡時,未觸發window onload事件。 以下是執行此操作的示例代碼。 在這里嘗試嘗試在不同的同一選項卡中依次打開URL列表,因為未觸發onload事件,因此沒有進行遞歸調用。

 var urls = ['https://stackoverflow.com/q/4907843', 'https://stackoverflow.com/q/19851782', 'https://stackoverflow.com/q/726761']; function opennewtab(i) { var w = window.open(urls[i], 'so', ''); if (w) { w.onload = function() { opennewtab(i + 1); } } }; opennewtab(0); 

全部都在同一個域中。 請在此處將代碼段粘貼到瀏覽器開發人員工具的同一頁面中。

為什么不使用承諾? 我還沒有測試過,但是應該看起來像這樣:

const urls = 
    [ 'https://stackoverflow.com/q/4907843'
    , 'https://stackoverflow.com/q/19851782'
    , 'https://stackoverflow.com/q/726761'
    ] 

function Load_URL(url) {
  return new Promise(res=>{
    let w = window.open(url, 'so', '')
    w.addEventListener('load', res)
  }) 
}

for (let url_x of urls) await Load_URL(url_x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM