繁体   English   中英

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

[英]Safari show Pop-Up on window.open

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

弹出

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

尝试 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>

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

每个动作或Event都可以“受信任”或不“受信任” 如果用户进行任何交互以触发事件,则该事件将被信任,而在另一种情况下,上下文将是Untrusted

在这两种情况下,您都可以在没有用户交互的情况下使用 javascript。 因此,为防止出现意外窗口,Safari 将阻止弹出窗口。

如果您将代码放在一个函数中并使用onClick触发它,那么当用户单击(用户交互)时,事件的上下文将被信任,并且 window.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM