• 如何解决浏览器阻止弹窗的问题?
  • 发布于 2个月前
  • 66 热度
    1 评论
  • 卡农
  • 14 粉丝 39 篇博客
  •   

我现在有个系统,用户点击添加按钮我会用js弹出一个新的页面,代码就类似:

<script>window.open('http://www.XXXX.com/test.aspx'); </script>
但是我现在发现好像大部分的浏览器都会阻止弹窗,这个问题有什么比较好的解决方法?我不可能让每个用户都手工点击允许吧

用户评论
  • 不二神话
  • 如果你是想通过加载页面自动执行的话基本上没戏,如果你是想通过手工点击按钮之类的实现弹窗效果可以有如下几种实现方式:

    1.表单提交的方式
    var form = document.createElement('form');
    form.action = 'www.baidu.com?id=1';
    form.target = '_blank';
    form.method = 'POST';
    document.body.appendChild(form);
    form.submit();

    这种方式,如果需要传递参数时,需要使用 POST 方法, 默认的 GET 方法无法传递参数。也就是新页面的url中没有参数部分。

    另外,Ajax下载文件时也是用form 表单来模拟下载。

    2.直接将打开窗口操作放在按钮/链接的onclick事件中
    如:<a href="javascript:void(0)" onclick="window.open(url)"></a>


    3.延迟这个打开操作
    如:setTimeout('window.open(url);', 500); // 延迟时间不能太短 否则也会被拦截

    4.通过JS打开新窗口会被拦截,换一种实现方式
    var tempwindow=window.open('_blank'); // 先打开页面
    tempwindow.location='http://www.dalbll.com'; // 后更改页面地址

  • 2018/9/13 21:18:00 [ 1 ] [ 0 ] 回复