`
jsczxy2
  • 浏览: 1277446 次
  • 性别: 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打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新...

    window.open()实现post传递参数

    通常,`window.open()` 的使用方式是 `window.open(url, target, features)`,其中 `url` 是要打开的页面的地址,`target` 指定打开的位置(如 `_blank` 表示新窗口),`features` 是窗口特征的字符串,如宽度、高度...

    window.open 以post方式传递参数示例代码

    在Web开发中,有时我们需要在不同的页面之间传递参数,`window.open`是JavaScript中用于打开新窗口的一个方法。通常,`window.open`配合GET方式传递参数,但也可以通过POST方式来实现更安全、更复杂的参数传递。本文...

    详解window.open被浏览器拦截的解决方案

    例如,将`window.open`放入`addEventListener('click', function() {...})`中,浏览器就不会阻止新窗口的弹出。然而,如果将这类代码放入异步处理(如Ajax回调)中,浏览器可能会拦截新窗口。 **原因解析** 浏览器...

    window.open以post方式将内容提交到新窗口

    本文将介绍两种在JavaScript中使用`window.open`以POST方式将内容提交到新窗口的方法。 ### 方法一: 这种方法是通过动态创建HTML表单(form)元素,设置其属性,并利用`attachEvent`或`addEventListener`来触发...

    Xilium CefGlue 浏览器弹出新窗口,改为新标签选项卡中打开的问题

    在使用Xilium CefGlue时,可能会遇到一个常见的问题,即浏览器组件在点击链接或执行JavaScript的`window.open`时,会弹出新的窗口,而不是在当前窗口或者在已存在的标签页中打开。这可能不符合用户的期望,特别是...

    from表单新窗口打开并提交

    在网页开发中,"from表单新窗口打开并提交"是一种常见的用户交互方式,它允许用户在新的浏览器窗口中打开一个表单,并在用户填写完信息后提交表单。这种方式通常用于创建更友好的用户体验,比如创建注册或登录页面时...

    探索浏览器页面关闭window.close()的使用详解

    CSDN可能试图通过创建一个临时的新窗口,然后立即关闭来规避这个问题,但这在某些浏览器中可能不起作用。 - **使用`window.open('', '_self')`** 一种常见的方法是先使用`window.open('', '_self')`将当前页面替换...

    Window.Open如何在同一个标签页打开

    在网页开发中,`window.open()` 是一个非常重要的 JavaScript API,它用于在浏览器中打开新的窗口或标签页。然而,有时候我们可能希望在一个已经存在的标签页中打开一个新的URL,而不是每次都创建新的窗口。本篇文章...

    浏览器兼容性汇总借鉴.pdf

    7. **模态和非模态窗口问题**:创建新窗口的`window.open()`方法在不同浏览器中的行为可能不同,尤其是在处理模态和非模态窗口时。需要检查并调整`features`参数以适应各种浏览器。 8. **Firefox与IE的...

    JavaScript中windows.open()、windows.close()方法详解

    `window.open()`返回一个表示新窗口的`Window`对象。如果指定的`name`对应一个已存在的窗口,那么该窗口会被重用,`features`参数则无效。对于浏览器的弹出窗口限制,`window.open()`通常只有在用户交互(如点击按钮...

    JavaScript打开与关闭窗口.pdf

    - `WindowVar`: 如果`open()`方法成功,`WindowVar`将存储新窗口的引用,否则它将是`null`。 - `url`: 指定要加载到新窗口的URL。如果为空字符串,新窗口将加载一个空白页,可以使用`write()`方法动态创建HTML。 - `...

    JavaScript调用window函数.docx

    window 对象的 name 属性返回窗口名称,这个名称是由 window.open() 方法创建新窗口时给定的。在 JavaScript 1.0 版本中,该属性只能用于读取窗口名称,而到了 JavaScript 1.1 版本时,可以使用该属性给一个不是使用...

    如何在父窗口中得知window.open()出的子窗口关闭事件

    `window.open()`是一个内置函数,用于打开新的浏览器窗口、标签或框架。了解如何在父窗口中捕获子窗口的关闭事件是实现特定交互逻辑的关键。下面我们将深入探讨这一主题。 首先,`window.open()`方法接受三个参数:...

    javascript关于open.window子页面执行完成后刷新父页面的问题分析

    1. **window.open()方法**:这是一个可以在浏览器中打开新窗口的JavaScript方法。它通常接受三个参数:URL、窗口名称和一系列窗口特性设置(如大小、位置等)。例如:`window.open('addInfo.jsp', '_blank', 'width=...

    js打开新窗口方法整理

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

    javascript提交父窗口

    在 Web 开发中,一个网页可以打开其他窗口或弹出新窗口。这些窗口之间存在一种父子关系。打开新窗口的页面被称为父窗口,而被打开的新窗口则被称为子窗口。这种关系主要通过 `window.open()` 方法来建立: ```...

    浏览器对象BOM.ppt

    - `window.open()`方法打开新窗口,可以指定URL、窗口名和窗口特征,如大小、位置、是否显示工具栏等。 5. **应用实例** - 打开新窗口时,可以自定义窗口的大小、位置、特征等,如: ```javascript open("adv....

Global site tag (gtag.js) - Google Analytics