希望有人可以帮助我。代码段工作正常。唯一的问题是在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>
答案 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>