我正在研究一个基本的oauth身份验证原型,我有一个HTML(称为parent.html
)打开一个子窗口来实现此目的。子窗口将重定向到提供程序网站,然后重定向到我的注册页面。我的注册页面将使用javascript调用window.close();
来关闭子窗口。
但是当我在Microsoft Edge中尝试我的原型时,每当javascript尝试关闭子窗口时,我都注意到了一个警告。我测试了其他使用弹出窗口进行oauth身份验证的网站,例如dropbox,在完成身份验证并且子窗口即将关闭时,我没有看到相同的关闭警告。
有人知道为什么(以及在什么情况下)Edge会显示此警告对话框?任何信息都是有用和赞赏的。感谢。
答案 0 :(得分:0)
这是因为MS Edge中的弹出窗口阻止程序和自动脚本阻止程序功能。基本上这两个功能将尝试阻止任何在加载页面期间无需用户操作自动运行的脚本。
例如,这两个脚本将在MS Edge中阻止(它们在IE中工作):
var w = window.open("page.htm"); //w will be null.
window.close(); //displays a warning.
例如,如果将它们放在函数中并从按钮的单击事件中调用它们,则相同的两行将起作用。
在主窗口中创建一个函数来关闭弹出窗口,并在弹出窗口中调用该函数并将其传递给弹出窗口:
// in main window
function closePopup(w) {
w.close();
}
// in popup window
opener.closePopup(this);