`
jsczxy2
  • 浏览: 1255426 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

浏览器阻止新窗口(window.open或新窗的form提交)

阅读更多

在写js时,经常会出现浏览器会阻止用js写的window.open代码,但是,又不是每次都会阻止,它只会阻止特定情况下的window.open。因为如果浏览器默认都阻止window.open代码是不现实的,所以观察chrome浏览器对window.open阻止情况的总结如下:

浏览器不会阻止用户主动发起的window.open方法;浏览器一般都会阻止非用户主动发起的window.open。

这里有一个问题,什么叫用户主动发起?

如下代码在执行过程中就是用户主动发起

<a href="window.open('http://www.baidu.com','_blank');">百度</a>

如下代码在执行过程中会被认为非用户主动发起:

<a href="javascript:setTimeout(function(){window.open('http://www.baidu.com','_blank')},2000);">百度</a>

也就是说,用户触发一个事件后,事件处理函数所执行的window.open会被认为是合理的不会被阻止;但是,如果是由异步方式再执行window.open 会被浏览器阻止,因为浏览器认为不是由用户主支发起的,而是js代码自己发起的。这里就涉及到js前端代码经常会用到的ajax调用了,如果用到ajax时用的是异步执行(默认都是异步执行),那么就会经常出现window.open会被阻止。解决的方法是把ajax设置成同步。

$.ajax({  

           async: false, //就是设置这个最为关键的ajax同步  

           type: 'POST',  

           url: ctx + "/sales/submitBank",  

           data: orderPost,  

           success: function(datas){  

               result = datas;  

           }  

       }); 

以上描述同样适用于form提交

Dwr可以直接改写参数:

async:false即可

分享到:
评论

相关推荐

    JS打开新窗口防止被浏览器阻止的方法

    用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新...

    js打开新窗口方法整理

    [removed]=”aaa.aspx” 上面的方法只能在当前页打开,如果要在新的页面...都是使用js中的window.open有一个缺点就是容易被浏览器屏蔽。本文介绍了js中打开新窗口的各种方法。 1,打开新窗口全屏 代码如下: &lt;html

    C#浏览器编程,学习使用

    完成输入内容后,单击“确定”按钮,进入项目VC#开发窗口“Form.cs[设计]”,如图4-3所示。 图4-3 VC#开发窗口“Form.cs[设计]” (2)界面设计(1天) ○1设计菜单栏如图4-4所示。(半天) 图4-4 设计菜单栏 ...

    JavaScript笔记.doc

    2、window.open()方法:用来打开一个新窗口 18 3、警告框:alert(); 19 4、确认框:confirm() 19 5、提示框:prompt(“”,””) 20 6、对话框:showModalDialog() 20 八、浏览器、地址和历史对象 21 1、IE的”浏览器...

    js使用小技巧

    &lt;body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)"&gt; 无关闭按钮IE window.open("aa.htm", "meizz", "fullscreen=7"); 统一编码/解码 alert...

    编译的 HTML 帮助文件 (.chm) DHTML手册

    若指定了附加参数,此方法将打开一个窗口,这与 window 对象的 window.open 方法相同。 queryCommandEnabled 返回表明指定命令是否可于给定文档当前状态下使用 execCommand 命令成功执行的 Boolean 值。 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XML创建了标识,而DOM的作用就是告诉script如何在浏览器窗口中操作和显示这些标识 上面我们已经简要的讲述了一些XML的基本原理,我们来看看它们之间的关联以及它们是如何工作的,先看这里一张图: 1.XML描述...

    70款经典Dreamweaver插件

    MX186725_splash_window 也叫chromeless splash , 一种效果很不错的浏览器窗口 MX175723_DWinamp 可以方便的在DW中控制Winamp,边工作,边听音乐 languagemenu 包括所有语言的下拉菜单(object) MX162506_persist_...

    Dreamweaver 插件集

    也叫chromeless splash , 一种效果很不错的浏览器窗口 MX175723_DWinamp 可以方便的在DW中控制Winamp,边工作,边听音乐 languagemenu 包括所有语言的下拉菜单(object) MX162506_persist_layer 不论浏览器...

    asp连接数据库代码实例

    转到:&lt;select name=\"select\" onChange=\'javascript:window.open(this.options[this.selectedIndex].value,\"_top\")\'&gt; &lt;%for p=1 to rs.pagecount%&gt; &lt;option value=\"?page=&lt;%=p%&gt;\" ...

    在b/s开发中经常用到的javaScript技术整理

    5.5 两层或多层次的下拉菜单 5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目) 5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 5.8 双击后,网页自动滚屏 6、树型结构。 6.1 asp+SQL版 ...

    dreamweaver的各种组件

    Fullscreen Opener 在新窗口中以全屏幕方式打开页面 close onblur 光标移出窗口时自动关闭该窗口 CSS on resolution 根据不同的分辨率调入相应的外部css文件 Css on platform 根据不同的操作系统调入相应的外部...

    400个DreamWeaver插件

    mxp/打开一个新窗口,并让窗口在屏幕上居中 mxp/Chromeless Windows,比我做的X-window好。 mxp/可以联合Authorware, CourseBuilder extension for Dreamweaver ,UltraDev, Macromedia Flash Learning Extensions, ...

    visio教程PDF

    9.2.1 创建新窗口 9.2.2 平铺式 9.2.3 层叠式 9.3 小结 第10章 使用标尺、网格和辅助线 10.1 设置标尺 10.1.1 选择度量单位 10.1.2 应用各种单位 10.1.3 放置标尺零点 IO.2 使用网格 ...

    Visio 2000 技术大全

    9.2.1 创建新窗口 9.2.2 平铺式 9.2.3 层叠式 9.3 小结 第10章 使用标尺、网格和辅助线 10.1 设置标尺 10.1.1 选择度量单位 10.1.2 应用各种单位 10.1.3 放置标尺零点 IO.2 使用...

    jQuery LigerUI V1.1.0

    [需求]增加打开下拉框前事件,利用这个参数可以用来调用其他函数,比如打开一个新窗口来选择值 表单 [需求]spinner支持最大最小值 树 [需求]增加 选择/反选择节点 接口 弹窗 [需求]支持回车关闭 [修复]dialog....

Global site tag (gtag.js) - Google Analytics