关闭.click()打开的弹出窗口

问题描述 投票:0回答:1

我有一个弹出窗口,使用从控制台运行的代码打开:

// Find all the "Activate" buttons on the page
var offerButtons = Array.from(document.getElementsByClassName("AvailableDealTile2__activation-status___jsguf")).filter(span => span.textContent === "Activate");
var index;
for (index = 0; index < offerButtons.length; ++index) {
    console.log("Clicking Activate button");
    offerButtons[index].click();
    // Wait 2seconds to be nice to WF servers :)
    await new Promise(r => setTimeout(r, 2000));
}
console.log("All done. Refresh and try again.");

如何关闭 for 循环中的弹出窗口?

我尝试了以下方法:

var daddy = window.self;
daddy.opener = window.self;
daddy.close();

但是没有成功。

javascript popup
1个回答
0
投票

您没有显示实际打开新窗口的代码,但您需要为该返回值分配一个变量(这将是对新窗口本身的引用)。然后您可以通过对该引用调用

.close
来关闭窗口。

这是一个示例(由于沙箱,下面的代码片段在 SO 中不起作用,但如果您尝试一下here,它会起作用):

let newWindow = null;

document.querySelector("#open").addEventListener("click", function(){
  newWindow = window.open("https://example.com");  
});

document.querySelector("#close").addEventListener("click", function(){
  newWindow.close(); 
});
<button id="open" type="button">Open Window</button>
<button id="close" type="button">Close Window</button>

© www.soinside.com 2019 - 2024. All rights reserved.