注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学会珍惜

You've been saying for the longest time

 
 
 

日志

 
 

window.open返回值为null  

2012-12-15 09:09:52|  分类: 前端开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转自:闭门造车

项目中需要用户点击一个按钮在新窗口预览广告内容时,我用window.open来打开一个新窗口并在其中用document.write内容来实现预览,企图减少一个页面文件。但是在测试中发现有的浏览器,特别是同事电脑上的IE6总是报JS错误,由于上线前一直紧张的修各种IE6兼容性问题,完全没有仔细考虑就换成写了一个新页面来弹窗解决了。

现在空下来整理问题时经过反复的测试终于找到问题所在:window.open在用户未信任授权的域名下调用时返回值会是null,其中的特例是Chrome,虽然禁止了弹窗窗口,但仍可以返回类型为Window的窗口对象引用。

这段代码的DEMO可以用来测试:

<p><button type="Button" onclick="openWindow()">点击在新窗口打开elfjs.com</button></p> 

<script type="text/javascript"> 

function openWindow() {  

var win = window.open('http://elfjs.com/');

alert(win); 

}  

var win = window.open('http://elfjs.com/'); 

alert(win); </script>


可以看到其中一个区别是用户触发的事件函数里弹出窗口不会被禁止,而页面直接调用弹出就会被安全策略限制。

之前一直没有找出问题根源的原因可能是我本地用于测试的域名早已被设置过信任弹出窗口,其他同事也是用FF/Chrome测试较多,可能也在先前设 置过弹出窗口信任。而最少使用IE6测试,所以没设置过,就导致现象是IE6下报JS错误。另外IETester下完全无法设置,所以总是错的。

  评论这张
 
阅读(1207)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017