window.close 无法在 JavaScript 中关闭选项卡

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

在 SingleSignOn 身份验证成功完成并尝试使用 JavaScript window.close 关闭重定向 URL 选项卡后,我遇到了问题,但它不起作用。

我尝试了很多 JavaScript 命令,但没有任何效果。经过分析,我了解到重定向选项卡未使用 JavaScript 命令打开,因为 window.close() 和其他命令不起作用,并在控制台中发出警告“脚本可能仅关闭它们打开的窗口。”

以下是我尝试过的一些命令

window.open('', '\_self', '');
window.close();
publicClientApplication = PublicClientApplicationBuilder.Create(clientId).WithTenantId(tenantId).WithRedirectUri(redirectUri).Build();

Dim options As SystemWebViewOptions = New SystemWebViewOptions() With { .HtmlMessageError = "<p> An error occurred: {0}. Details {1}</p>", .BrowserRedirectSuccess = New Uri("http://localhost:52655/default.aspx") } 

Dim test = publicClientApplication.AcquireTokenInteractive(scopes).WithSystemWebViewOptions(options).ExecuteAsync().Result

身份验证选项卡是从上面的代码触发的。

我尝试了关闭选项卡的命令。 以下是我尝试过的一些命令

window.open('', '_self', '');
window.close();
我注意到 window.opener 为空。 因此,所有与选项卡关闭相关的命令都不起作用。

javascript asp.net webforms single-sign-on azure-ad-msal
1个回答
0
投票

我不太了解你的 JavaScript 代码,但是你是否尝试过在 JS 中存储对你打开的窗口的引用,然后通过该句柄关闭它?这段代码在我测试时是有效的。

function createPopup(url, name)
{
    // newTab will be null if window creation failed
    let newTab = window.open(url,name,'width=560,height=340,toolbar=0,menubar=0,location=0')
    
    if (window.focus) {
        newTab.focus()
    }

    return newTab
}

window.onload = () => {
    let win = createPopup("google window", "www.google.com")
    setTimeout(() => {
        win.close()
    }, 1000)
}

(我不认为 StackOverflow 允许片段打开弹出窗口,但你明白了)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.