window.open 会被IE阻止的问题

llama factory NOTE] 除上述链接以外的其他网站均为未经许可的第三方网站,请小心甄别。 阅读详情

 

在web编程过程中,经常会遇到一些页面需要弹出窗口,但是在服务器端用window.open弹出的窗口会被IE阻止掉,showModalDialog弹出的窗口有时并不能满足我们需要,我们需要弹出新的浏览器窗口。

 为什么我们编写的弹出窗口会被IE阻止呢,原来IE会自动判断弹出窗口的状态,它会阻止自动弹出的窗口,而通过我们用鼠标点击弹出的窗口,它是不会阻止的。这里就有一个问题,有人说:我的程序是写在服务器按钮里的,也是通过鼠标点击弹出的呀!其实只有在加载页面后,我们点击到弹出这段时间页面没有被重新加载的情况下,弹出的窗口才不会被阻止!这也就是说,写在服务器控件的回传事件里的window.open都会被阻止。

 

如果想要弹出窗口而不被阻止, 必须是用户点击之后使用window.open方可, 但是如果点击后有异步处理操作, 而且是在操作成功后再弹出, 那么这个新窗口就会被阻止了。

    所以为了变通处理, 点击后就弹出一个空白的新窗口, 然后异步处理结束后再设定目标路径即可。

------------------------------------------------------------------------------------------------------------------------------

方案 1

如:

tempFunc=function(){
      var item=prodGrid.getItem(0);
      if(!item)return;
      var orderItemId=prodStore.getValue(prodGrid.getItem(0),'purchaseOrderItemId');
      var p=window.open('about:blank');
      var xhrArgs = {

                 url: "buyFromPreparation.action?orderItemId="+orderItemId,
                    load: function(data){
         prodStore.save();
         prodStore.url='getPpi.action?currentCategory1='+currentCategory1;
         prodStore.close();
         prodGrid._refresh();
         if(!p)alert("弹出的订单处理窗口被阻止了,请手动设置允许此窗口被打开。");
         p.location='checkOrder.action?orderId='+data;         
        },
                    error: function(error) {alert(error);}
             };      
      var d= dojo.xhrGet(xhrArgs);
     };

(先打开一个空窗口,等判断逻辑之后再 指定路径)

为什么我们编写的弹出窗口会被IE阻止呢,原来IE会自动判断弹出窗口的状态,它会阻止自动弹出的窗口,而通过我们用鼠标点击弹出的窗口,它是不会 阻止的。这里就有一个问题,有人说:我的程序是写在服务器按钮里的,也是通过鼠标点击弹出的呀!其实只有在加载页面后,我们点击到弹出这段时间页面没有被 重新加载的情况下,弹出的窗口才不会被阻止!这也就是说,写在服务器控件的回传事件里的window.open都会被阻止。

最简单有效的方法如下:
在window.open()函数中增加一个参数,将target设置为‘self’,
即改为使用: window.open(link,'_self');

微软的网站上的说明:

Pop-Up Blocking
The Pop-up Blocking feature blocks pop-up (and pop-under) windows initiated automatically by a Web site. Internet Explorer blocks Pop-up windows in the Internet and Restricted sites zones by default. However, the Pop-up Blocker enables pop-up windows initiated by a user action. Users can configure Internet Explorer 6 for Windows XP with SP2 to be more or less restrictive. Users can also turn off the Pop-up Blocker altogether. Generally, the Pop-up Blocker enables a window to open under the following circumstances:

? When initiated by user action, such as clicking a button or hyperlink

? When opened in the Trusted sites and Local intranet zones (considered safe)

? When opened by other applications running on the local computer


The affected script methods are:

window.open
window.showHelp
window.showModalDialog
window.showModelessDialog
window.external
window.NavigateAndFind
注:
Pop-ups created with window.createPopup are unaffected by the Pop-up Blocker.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

方案 2

由于在使用window.open时,在很多情况下,弹出的窗口会被浏览器阻止,但若是使用a链接target='_blank',则不会,基于这一特点,自己封装了一个open方法:

function  openwin(url) {
    
var  a  =  document.createElement( " a " );
    a.setAttribute(
" href " , url);
    a.setAttribute(
" target " ,  " _blank " );
    a.setAttribute(
" id " ,  " openwin " );
    document.body.appendChild(a);
    a.click();
}

 

调用方式如下:

< input  type ="button"  id ="btn"  value ="百度"  onclick ="openwin('http://www.baidu.com');"   />

 

【YOLOs-CPP-图像分类部署】04-项目优化(加速部署) 本文详细介绍了将YOLO图像分类C++部署项目从CMake迁移到Visual Studio控制台应用的全过程。针对低配CPU性能瓶颈问题,作者通过替换多线程HPP代码为官方实现,并采用448x448固定输入尺寸优化推理速度。项目配置包含OpenCV和ONNX Runtime环境设置,实现了图像批量处理、分类结果显示及结果日志输出功能。关键步骤包括依赖库配置、DLL部署和代码调试,最终在Windows平台成功实现高效CPU推理。该方案显著提升了低配硬件的兼容性,为图像分类任务提供了稳定的部署解决方案。 阅读详情

相关推荐

NVIDIA Video Codec SDK-解码接口cuvid简介

特性已废弃的 NVCUVID现代的 NVDECODE (底层 API)现代的 NVDECODE (高层 API - NvDecoder)状态已废弃 (Deprecated)官方推荐 (底层控制)官方推荐 (易用性首选)编程模型C 函数C 函数C++ 类复杂度高,需要管理大量细节中高,仍需管理解码会话低,开箱即用灵活性高高中(满足绝大多数场景)推荐对象遗留项目维护需要极致控制的高级用户所有新项目、大多数开发者。

fudexiang的博客 1176

可恶,IE中的window.open()

简介 现在我要在IE中弹出一个新的页面(没有地址栏,状态栏,工具条,菜单栏等),并且在页面关闭之后还要触发一个事件 打开页面 利用 window.open() 来打开一个新的页面,虽然设置了系类参数,可是打开的页面仍有地址栏,状态栏等,经查阅资料和询问高工及架构师,出于安全性考虑,ie禁止打开无地址栏状态栏的网址,但是可以通过设置ie的配置,和把ip地址加入到信任站点即可解决这个问题。 var win = window.open("", "_blank", "fullscreen=no,location

罗罗的1024 1607

ITK-snap医学图像标注方法(超级详细)——保姆级

医学3D图像标注方法,非常详细,保姆级

jialiyk的博客 3万+

IE浏览器不能使用window.open()的解决方案

1.判断浏览器是否为IEvar userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  var isIE = userAgent.indexOf("compatible") &gt; -1 &amp;&amp; userAgent.indexOf("MSIE") &gt; -1; //判断是否IE&lt;11浏览器  if(isIE){//如果...

u012565281的博客 1万+

WPS占用C盘空间解决方案与优化技巧

办公软件在长期使用过程中会产生大量缓存和历史文件,这些文件往往隐藏在系统目录中,导致磁盘空间被无声占用。以WPS为例,其版本历史备份、云同步缓存和模板库是主要空间占用源。通过分析文件存储机制,可以定位到具体的缓存路径,如AppData目录下的Kingsoft文件夹。针对这一问题,有效的解决方案包括手动清理、自动化脚本和注册表优化。对于需要持续监控的场景,可以结合PowerShell脚本和任务计划实现自动化管理。在实际应用中,这些技术不仅适用于WPS,也可迁移到其他办公软件的空间优化中,是每位IT运维人员和高

weixin_30788239的博客 456

北京绿盟科技安服实习生面经

记一次绿盟校招技术面经历,人生第一次面试,该说不说还是很紧张的,以下是技术面的一些问题,欢迎各位大佬在评论区补充纠正对于面试的问题,都应该自己下来深度去拓展学习,面试官问的问题刚好可以检测我们自己对某个模块的学习情况,借此更好的进行总结和学习。

qq_51690690的博客 3232

window.open新打开窗口与新开标签页

最近在使用window.open时忽略了一个细节问题:window.open新打开一个窗口,但是有时却是新打开一个窗口有时打开一个新标签页。虽然对一般的需求来说,这个两种情况都无所谓,但是对于那种有强烈区分的需求来说还是要注意的。那么怎么会出现这种不同的打开情况呢,这要从window.open方法的用法和不同浏览器来区分。 1、window.open的用法容易忽视的细节 window....

weixin_30823227的博客 2714

TMF8801 ToF激光测距传感器原理图设计,已量产(距离传感器)

这张 TMF8801 小板的外围结构就很有代表性。核心传感器是 U1 TMF8801,但真正构成量产价值的是外围那一圈:U2 把 VCC 整理成 3V,R1/R2/R5 与 R3/R4/R6 两组 10K 电阻稳定默认态,Q2 2N7002 和 U3 SN74LVC2G07DCKR 处理控制链路,传感器边上还有 C1/C4/C5 三颗 100nF 紧贴去耦。

不脱发的程序猿 159

window.open被拦截解决方案

打开一个空白页面,将url window.location.href = url; 如果一旦url没有回调获取到,而打开一个空白页面,会让人很诧异。比较好的方案就是我们去监听是否拿到了url, 一旦拿到了,我们就window.open(url). 具体实现: setInterval(() => { if ( this.useRef.current) { window.open(this.useRef.current) } }, 100) 请求promise.then(res=> this.use

qq_41123620的博客 472

华为OD机试双机位C卷-MVP争夺战 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【MVP争夺战】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - MVP争夺战,

qq_45776114的博客 1171

Agile Modbus使用和学习笔记

i < len;这里仅仅需要提供获取函数即可,离散输入是只读类型i++) {return 0;只读类型寄存器i++) {return 0;i < len;

Car12 167

解决window.open 会被IE阻止的问题

转自:http://blog.csdn.net/fanfanjin/article/details/6858168 在web编程过程中,经常会遇到一些页面需要弹出窗口,但是在服务器端用window.open弹出的窗口会被IE阻止掉,showModalDialog弹出的窗口有时并不能满足我们需要,我们需要弹出新的浏览器窗口。  为什么我们编写的弹出窗口会被IE阻止呢,原来IE会自

志超的专栏 1万+

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然后在下拉的System中选择导弹的类型,这里我们选择远程。(4)输出数据文件到STK,任务窗口里选择Export Manager项,飞行数据输出到STK。项目可以命名为Test;(1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图。首先看世界地图中间的红圈,是一个导弹形状的图标,这个图标表示的是导弹的发射点。选择下面的Export Manager,依次勾选红框的选项。我们拖动这个导弹的图标,

weixin_44184852的博客 1630

解决异步返回 window.open 会被IE阻止的问题(转)

如果想要弹出窗口而不被阻止, 必须是用户点击之后使用window.open方可, 但是如果点击后有异步处理操作, 而且是在操作成功后再弹出, 那么这个新窗口就会被阻止了。     所以为了变通处理, 点击后就弹出一个空白的新窗口, 然后异步处理结束后再设定目标路径即可。 如: tempFunc=function(){      var item=prodGrid.getItem(0); ...

eoasis的专栏 456

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

window.open控制不了宽度和高度的解决方法

在用window.open方法弹出新窗口时,控制不了宽度和高度,总是默认在新窗口打开,而且占据了整个页面,仔细检查后,发现是要在IE中进行设置 ,点击工具-Internet选项 选项卡 遇到弹出窗口时,由IE决定如何打开弹出窗口,即可让window.open方法生效,能够控制弹出的页面的宽度和高度

wyumening的专栏 4347

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

window.open方法闪退(跨域被拦截)

        背景:昨天项目突发的一个问题,原本window.open能正常执行,并且打开总控页面实现单点登录,昨天突然不行了。联系不到总控的技术人员,只好自己动手查找原因。       测试发现:A.使用chrome浏览器===》1.打开其他网页可以,唯独总控页面不行    2.总控页面在console中用js代码window.open打开自己页面,其他域页面可以,但其他域页面在console...

qq_33907337的博客 4980

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

window.open在IE下ajax中的兼容性

问题:在ajax中window.open在IE下会弹出浏览器阻止窗口的问题,进而不再执行window.open打开新tab页的方法 解决方法: 在ajax方法之前加上:windowOpenHandler = window.open("/loading-tips.html"); // /loading-tips.html 为提示加载页面在ajax内部之前window.open的位置用下列方法替换

xujiezi的专栏 794

浏览器ie/firefox/chrome阻止 ajax window.open a.click form.submit弹出新窗口被拦截解决方法

浏览器ie/firefox/chrome阻止 ajax window.open a.click form.submit弹出新窗口被拦截解决方法   场景: 业务系统需要 在 ajax 调用接口返回成功后 跳转到新窗口链接, 但是遇到了问题,在ajax 里面 window.open  ,  a.click()模拟点击链接,form.submit()表单提交,  都会被部分浏览器拦截,认为是弹...

GEO,SEO,AI优化,AI搜索优化,生成式引擎优化 1188

java文件下载内容不是正常的_JAVA 文件下载问题

环境:IE8。所需下载的文件为绝对路径:例如:c:/file/xxx.txt代码:JSP:fileNameJS:function downloadFile(fileId){$.ajax({url:"isFileExist",type:"POST",dataType:"json",data:{"fileId":fileId},success:function(data){if(data.isExis...

weixin_31885875的博客 374

去掉object

<a href="javascript:void(window.open('1.htm','_blank','toolbar=no,scrollbar=no,top=50,left=50,width=100,height=100'));" >Open 1.htm</a> void的作用是禁止window.open方法返回值,如果...

weixin_30416871的博客 169

window.open() 某些情况会被浏览器阻止弹出窗口

window.open() 的作用是创建一个新的浏览器窗口用来打开相关的资源,这是一个原生的 Javascript API 接口。有关 window.open() 的基本使用可以参考 mozilla 提供的  API 文档:window.open 。大部分现代的浏览器(泛指 Chrome / Firefox / IE 10+ / Safari)都默认开启了阻止弹出窗口的策略,原因是 window....

江木 6762

[工作问题总结]window.open导致IE自动关闭问题总结[1]

------------------------------ASP.Net+Android+IO开发  .Net培训 期待与您交流!------------------------------   最近在写SSO统一入口登入,其中就遇到了window.open的链接页面的问题,在此总结一下,希望可以帮助遇到同样问题的朋友... 一.先了解下window.open window.open

彭家贰小姐﹎ゞ桂香︺殘 1082

window.open 在Safari中被拦截

原因:大部分现代的浏览器(Chrome/Firefox/IE 10+/Safari)都默认开启了阻止弹出窗口的策略,原因是window.open被广告商滥用,严重影响用户的使用。这个阻止弹出窗口的操作,并不是直接封杀window.open(),而是会根据用户的行为来判断这次window.open()是否属于流氓操作。 如果是由用户触发的动作所引起的 window.open 就不会被浏览器所阻止,比如写在 onclick 这些事件 handler 里的,但如果是代码自己触发的就会被阻止。 那么,我们可以知

xiawenyi1234的博客 3016

window.open在Safari中不能打开的问题

大部分现代的浏览器(Chrome/Firefox/IE 10+/Safari)都默认开启了阻止弹出窗口的策略,原因是window.open被广告商滥用,严重影响用户的使用。这个阻止弹出窗口的操作,并不是直接封杀window.open(),而是会根据用户的行为来判断这次window.open()是否属于流氓操作。 这些事件 handler 里的,但如果是代码自己触发的就会被阻止。 在Safari中无法open新窗口,原因是Safari的安全机制将其阻挡。 解决方案:调用Ajax之前,先打开这个窗口.

Jana Jing的分享 1205

JavaScript 中的 Window.open() 用法详解

本文介绍了如何使用Window.open()方法,列举了该方法中各个参数的含义,以及如何在当前窗口、新窗口、独立窗口打开地址

孙悟空 4万+
上一篇: RGraph: Free HTML5 and JavaScript charts
下一篇: WPF读写.exe.config 或 app.config文件
wmjcom
博客等级 码龄24年 71粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值