admin管理员组文章数量:1130349
当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到一段异步代码内部,马上就出现被拦截的表现了。
当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这可能是一个广告,不是一个用户希望看到的页面。
解决方案一:
- function newWin(url, id) {
- var a = document.createElement(‘a‘);
- a.setAttribute(‘href‘, url);
- a.setAttribute(‘target‘, ‘_blank‘);
- a.setAttribute(‘id‘, id);
- // 防止反复添加
- if(!document.getElementById(id)) {
- document.body.appendChild(a);
- }
- a.click();
- }
这种方案不适用与异步代码中。
解决方案二:
let newWindow = window.open("about:blank","_blank");
- $.ajax({
- type: "post",
- url: "/xxxx/xxxx",
- data: {"param": param},
- error: function (data) {
- showError(data);
- },
- success: function (data) {
- if (data.errorFlag == 0) {
- // 新加
- newTab.location.href = "www.baidu";
- } else {
- layer.alert(data.desc, {icon: 2, title: '提示信息'})
- }
- }
- });
当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到一段异步代码内部,马上就出现被拦截的表现了。
当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这可能是一个广告,不是一个用户希望看到的页面。
解决方案一:
- function newWin(url, id) {
- var a = document.createElement(‘a‘);
- a.setAttribute(‘href‘, url);
- a.setAttribute(‘target‘, ‘_blank‘);
- a.setAttribute(‘id‘, id);
- // 防止反复添加
- if(!document.getElementById(id)) {
- document.body.appendChild(a);
- }
- a.click();
- }
这种方案不适用与异步代码中。
解决方案二:
let newWindow = window.open("about:blank","_blank");
- $.ajax({
- type: "post",
- url: "/xxxx/xxxx",
- data: {"param": param},
- error: function (data) {
- showError(data);
- },
- success: function (data) {
- if (data.errorFlag == 0) {
- // 新加
- newTab.location.href = "www.baidu";
- } else {
- layer.alert(data.desc, {icon: 2, title: '提示信息'})
- }
- }
- });
版权声明:本文标题:使用window.open()方法打开新页面,被浏览器拦截问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1741135412a1834958.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论