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