• window.open(url)打开链接被浏览器拦截解决方案


    浏览器为了维护用户安全和体验,禁止在JS中直接使用window.open(url)来打开新的链接(window.open(url,”_self”)改变当前的窗口是可以生效的)。下面采用几种变通方法解决:

    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();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

    2.直接将打开窗口操作放在按钮/链接的onclick事件中

    如:

    <a href="javascript:void(0)" onclick="window.open(url)"></a>
    
    • 1

    3.延迟这个打开操作

    如:

    setTimeout('window.open(url);', 500); // 延迟时间不能太短 否则也会被拦截
    
    • 1

    4.通过JS打开新窗口会被拦截,换一种实现方式

    var tempwindow=window.open('_blank'); // 先打开页面
    tempwindow.location='http://www.baidu.com'; // 后更改页面地址
    
  • 相关阅读:
    BZOJ1513: [POI2006]Tet-Tetris 3D
    BZOJ3210: 花神的浇花集会
    BZOJ3207: 花神的嘲讽计划Ⅰ
    BZOJ3170: [Tjoi 2013]松鼠聚会
    BZOJ3747: [POI2015]Kinoman
    解题:POI 2008 Subdivision of Kingdom
    解题:JSOI 2007 重要的城市
    解题:USACO13NOV No Change
    解题:洛谷1120 小木棍
    解题:SCOI 2008 配对
  • 原文地址:https://www.cnblogs.com/Fooo/p/14330277.html
Copyright © 2020-2023  润新知