Safari在window.open上显示弹出窗口

时间:2019-12-10 18:30:26

标签: javascript safari popup apex

希望有人可以帮助我。代码段工作正常。唯一的问题是在iPad / Safari上,此代码打开新选项卡会运行到弹出窗口阻止程序中。如果禁用弹出窗口阻止程序(可以的话),仍然会显示一条消息“此站点正在尝试打开弹出窗口”,并带有按钮“阻止”和“允许”-附有屏幕截图。单击“允许”打开新标签。

PopUp

如何避免弹出窗口阻止程序和此消息?

尝试1次(出现弹出窗口):

var popUp = window.open(SurveyLinkval);
try {
	popUp.focus();   
}catch (e) {
	alert("Pop-up Blocker is enabled! Please disable your pop-up blocker.");
}

尝试2次(出现弹出窗口):

$('#newTabLink').attr('href', SurveyLinkval);
$('#newTabLink')[0].click();

以下HTML代码确实有效:

<a id="newTabLink" target="_blank" href="https://www.google.com/" style="display:block;">Open in New Tab Link</a>

1 个答案:

答案 0 :(得分:0)

这不可能在浏览器中“修复”。如果用户不执行任何操作,某些浏览器(例如Safari)将不允许打开弹出窗口。

每个操作或Event可以“被信任” 。如果用户进行任何交互来触发事件,则事件将被信任;在另一种情况下,上下文将为不受信任

在两种情况下,您都使用javascript,而无需用户干预。因此,为防止出现意外窗口,Safari将阻止弹出窗口。

如果将代码放入函数中并用onClick触发,则当用户进行点击(用户交互)时,事件的上下文将受到信任,并且窗口.open将不会造成任何麻烦。

例如:

<html>
    <body>
        <span onclick="onAnyTextClick()">anyText</span>
        <script>
            function onAnyTextClick() {
                var popUp = window.open("https://www.google.com");
                try {
                    popUp.focus();
                }catch (e) {
                    alert("Pop-up Blocker is enabled! Please disable your pop-up blocker.");
                }
            }
        </script>
    </body>
</html>

很高兴知道: https://www.w3.org/TR/uievents/#trusted-events