window.open()弹出窗口防止被禁

window.open(),顾名思义,是指在当前浏览器窗口弹出另一个浏览器窗口。

因为多种原因,浏览对window.open弹出的窗口做了多方限制。限制不同,肯定会造成各浏览器弹出窗口的差异。

大部分浏览器会把由javascript弹出的窗口阻止(blocked)掉,得到用户的允许后,打开相应的弹窗。

现在的问题是,用户点击按钮,做相关的ajax请求,由于响应时间过长,当数据回来时,浏览器已经不认为这是在用户主导操作时间范畴内,而blocked掉弹出窗口。

解决方法:
由于window.open方法会返回一个指向新窗口的引用。可以通过这个引用对新开的窗口进行操作。
所以在用户点击btn时,第一时间弹出窗口,获取弹出窗口的引用。然后进行ajax数据请求,当数据返回时,对请开窗口url地址进行设置 :
newWindow.location = url;
1) call window.open just before calling $.ajax and save window reference:
var newWindow = window.open("loading.html");//这里也许要增加一个loading.html的过渡页面
2) on callback set location property of the saved window reference:
newWindow.location = url;

当然这里存在一定的问题:当ajax请求的数据出错时,新弹出的窗口获取不到最新数据而出错。

解决方法就是当请求完成且出错时,让newWindow跳转到出错页面。

又或者loading.html页自己做一个定时器,如果半分钟内没有urlchange,就自行跳错。

如果这样还不行,只能
alert('You have a popup blocker enabled. Please allow popups for company.com');

时间: 2024-10-27 09:13:02

window.open()弹出窗口防止被禁的相关文章

javascript:window.open弹出窗口的位置问题

 这篇文章主要介绍了javascript:window.open弹出窗口的位置问题,需要的朋友可以参考下 window.open 弹出窗口的位置 问题.记录一下  代码如下: <SCRIPT LANGUAGE="javascript">  <!--  window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollba

javascript:window.open弹出窗口的位置问题_javascript技巧

window.open 弹出窗口的位置 问题.记录一下 复制代码 代码如下: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //这句要

JS中window.open弹出窗口居中

利用下面这个js函数可以使window.open弹出的窗口居中function openwindow(url,name,iWidth,iHeight){var url; //转向网页的地址;var name; //网页名称,可为空;var iWidth; //弹出窗口的宽度;var iHeight; //弹出窗口的高度;var iTop = (window.screen.availHeight-30-iHeight)/2; //获得窗口的垂直位置;var iLeft = (window.scre

消息弹出窗口

问题描述 目前B/S系统需要实现有消息到来时弹出一个窗口进行提示,现在已经完成的是用ajax去系统定时刷新,然后弹出一个层,但是这样要求用户切换到系统页面才能看到,用户提出只要系统开着,无论是在干什么,如word,听歌,远程桌面等,都要能提示出来,请问有没有什么实现方式? 问题补充:我开始也以为是不能实现,但是确实看见过实现的,比如"金和OA"的消息提醒,当然机制我不清楚是怎么回事,但那个提醒是一个页面 解决方案 那你在最小化的时候使用window.showModalDialog弹出窗

用JQUERY做的弹出窗口如何随着窗口大小而改变,又如何隐藏弹出层的“关闭”安钮

问题描述 请教个问题,用JQUERY做的弹出窗口,目前弹出窗是全屏展示,_testWindow.window({ title: "弹出窗口", content:$('#afile').html(),//本页 width: 1010, height: 600, closed: false, minimizable:false, maximizable:false, modal:true,//遮照层 draggable:false, fit:true,//打开全屏 top:'0', lef

弹出窗口window.open()的参数列表

window|弹出窗口 <SCRIPT LANGUAGE="javascript">  <!--  window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')  //写成一行  -->  </SCRIPT>

弹出窗口及关闭总结(window.open();Response.Redirect(); 模态) .

1.弹出窗口没有最大最小化,没有滚动条,限制宽和高 this.Response.Write("<script language=javascript>window.open('d.htm','newwindow','height=100px,width=600px,status=no,toolbar=no, menubar=no,location=no,scrollbars=no,resizeable=no,top=300,left=200')</script>"

写了个easyui window 可是弹出的窗口老是打不开,被困扰好久和,求大神帮忙,在线等

问题描述 写了个easyui window 可是弹出的窗口老是打不开,被困扰好久和,求大神帮忙,在线等 解决方案 没人在吗?,,毕业设计,,,着急 解决方案二: 唯一标识符 所属类别: 思想政治素质业务能力人文素质 身体素质 评价内容: 评价描述: 提交 取消 解决方案三: 看不见你代码,谁知道 解决方案四: f12看报错没有,弹出的dialog里面有什么内容,是不是你要显示的内容容器设置了style display:none了,要去掉或者用js代码设置为display block 相关文章 e

easyui-为什么放在easyUI的window弹出窗口里面的textbox获取不到设置的默认值呢?

问题描述 为什么放在easyUI的window弹出窗口里面的textbox获取不到设置的默认值呢? 在easyUI的window窗口中放了很多的textbox 文本框,当通过点击事件打开window的时候,为什么在点击事件里面要加到textbox 中的默认值不显示呢? 代码如下 function looks(tiName){ $("#Name").val(''+tiName+''); $('#winlook').window('open'); } 解决方案 如果是在窗口打开之后赋值呢?