首先引入 w3help的,莫的测试: 原帖地址:http://www.w3help.org/zh-cn/causes/BX1053
 
w3help的测试,和我的测试相互补充,应该比较完整了.悲剧的是我做完测试后,和莫提了一嘴,他告诉我w3help有啊. 我累个去.咋不早说.我可以省不少事呢.
 
建议先看看w3help的.内容比较详细.尤其是据说 window.open,这种宿主方法.居然,可能在将来被html5所统一.期待啊.
 

浏览器实现差异:

     
           .一个open的窗口被拦截后, Opera11-  ,Chrome11- 仍然会有窗口句柄. 而Safari是undefined ,IE 和 Firefox 则是 null. 而Opera,Chrome拦截掉窗口后.这个窗口的window.closed属性为false.
           (所以在不考虑Opera和Chrome的情况下.可以用 !!win 来判断窗口是否被拦截. 而win.closed没有更大的意义)
 
          .sougou高速浏览器2.1+ IE内核下,会无视该弹窗是否为响应用户鼠标操作的回调(a 和 input button 以及button等点击类交互标签是不被拦截的).而一律强制拦截弹窗. 而且用a标签的click()也会被拦截.(好在,IE内核下,被拦截后,win 都是null.可以检测出来,用跳转代替,遗憾的是chromium内核下同chrome一样.被拦截时,无法检测.要检测chrome,opera的弹出,比较麻烦,弹一个about:blank,Opear检测documentElement是否存在,chrome则需要检测documentElement.clientWidth === 0)
 
 
          .各个浏览器使用window.open,第三参数效果:(应注意,如果连续写多个参数,应以 ","号分隔.如果其中某个参数名有错误,则可能导致整个第三参数在,Chrome和IE浏览器中失效)
浏览器 无参数 width,height left,top toolbar location
Directories
Status
Menubar
Scrollbar
Resizable
screenX,screenY
FullScreen
期待结果 有标签的 标签
无标签的 弹窗
尽量按指定
宽高弹窗
语义冲突的参数
相对parent页
left ,top位置
默认 无工具栏
yes 有工具栏
no 无工具栏
默认 有(r)
yes   有(w)
no  无
(r)只读,(w)可写
这玩意到底
是神马?
只有IE6支持
无期待结果
默认 无
yes 有
no 无
垃圾参数
无视.
只对早期
ie有效
默认auto
yes auto
no 无
默认 是
yes 是
no 否

真正语义上的参数
相对屏幕坐标
全屏显示
IE 6 弹窗

7-8 弹窗

9 标签

全部 ok (注1) 全部

默认无

   yes 有
   no  无
6
  默认 无
  yes 有(w)
(toolbar也有了)
  no 无

7,8,9
  默认 有(r)
  yes 有(w)
  no 有(r)

6
 toolbar去掉
 location部分

7,8,9不支持

6,7,8
无视参数
始终 有

9
 默认 无
 yes 有
 no 无

  全部
 无视参数
 始终 无
全部
 默认 否
 yes 是
 no 否
不支持 全部
 支持
Chrome 全部 标签 全部 ok 全部相对

父页面

left,top

不支持此参数
弹窗木有工具栏
不支持此参数
始终有,且只读
不支持 无status bar   1
 无视参数
 始终 无

2+ 
 默认 auto
 yes auto
 no auto

不支持此
参数,一律
可缩放
完全 ok  不支持
FireFox 1, 1.5 弹窗

2.0+ 标签

全部 ok

全部
 left 相对父页面left

top 相对屏 幕

   默认无

   yes 有
   no  无
1, 1.5, 2 
 默认 无
 yes 有(r)
 no 无

3+
 无视参数
 始终有(r)

不支持
无视参数
始终 有
 
无视参数
始终 无
2- 
 默认 否
 yes 是
 no 否

3+
 不支持此
参数,一律
可缩放.

完全 ok
3.6-
 不支持

4
 支持

Safari 3+ 弹窗
(Safari5 偏好设置
,在标签中打开新
页面, 选项有-总是
,永不,自动.默认是
永不.导致此问题.)
3+ ok
全部
   left 相对父页面
(但当父窗体left的
位置导致新窗体不
能全部显示时,则
新窗体left,相对屏
幕为0,与ie7有些
相似)
 
   top 相对屏幕
   默认无

   yes 有
   no  无
 默认 无
 yes  有(w)(但
工具栏也有了)
 no 无
不支持
 默认 无
 yes 有
 no 无
 
无视参数
始终 无
不支持此
参数,一律
可缩放
完全 ok
不支持
Opera 9.2+ 弹窗 9.2 tab

9.6+ 
标签(有宽高,可拖
拽.但无法离开父
窗口)
9.6+ 
相对父页面
的left,top
 
9.2 标签
9.2 tab

9.6+ 因其本质
是tab所以无视
此参数.一律无
toolbar

9.2 tab
 
9.6+ 因其本质
是tab所以无视
此参数.共享
location
不支持
9.2 tab
 
9.6+ 因其本质
是tab所以无视
此参数.共享
statusbar
 
无视参数
始终 无
不支持此
参数,一律
可缩放
不支持
不支持
                         
360安全 3.3+ 标签

3.612 弹窗

3.612 弹窗(无视
宽高参数parent
页面多大新弹窗
就多大)

其他版本 标签

3.612 left top
和parent页面
有关,但位置算
法很混乱.

其他版本 标签
3.612 弹窗无视
一切参数.显示
一个完整窗口

其他版本 标签
.. .. .. .. .. .. .. ..
360高速 两种内核都 标签 IE内核 标签

chromium都 ok

chromium 
同chrome
 
其他内核 标签
..
.. .. .. .. .. .. .. ..
搜狗高速 两种内核都 标签
两种内核都 标签
标签
.. .. .. .. .. .. .. .. ..
TT 标签 标签
标签
.. .. .. .. .. .. .. .. ..
QQ5 两种内核都 标签
两种内核都 标签
标签
.. .. .. .. .. .. .. .. ..
Maxthon2.5 标签
标签
标签
.. .. .. .. .. .. .. .. ..
Maxthon3 两种内核都 标签 两种内核都 标签
标签
.. .. .. .. .. .. .. .. ..
世界之窗 标签
标签
标签
.. .. .. .. .. .. .. .. ..
MyIe 标签
标签
标签
.. .. .. .. .. .. .. .. ..
 
ps:表中测试,有冲突的一些项目就不记录详细数据了,地方有限.意义不大.比如 location  = no , toolbar=yes 或反之. Safari下 是只有有一个是yes就都会有. 而ie6则很有趣.会分的很细.
 
 
 
 
 

 
 
 
 
 

   第二参数target(name)相关: 

    用途:

      .参考 target =_self , _blank , _top , _parent , target ,还有传说中的_newtab ,神马的.据说可以让ie7+ 不弹窗而是打开新标签.但是我测试失败了.求高人指点.     
   
      .为窗口对象设置name属性-window.name.        
 
      .所以对于同一个浏览器来说,各个窗口的name是具备唯一性的.(opera9.6+ 开始有些特殊.)    
     
 
      .也就是说,
如果已经存在一个窗口对象的name为abc.则后面再次window.open(url,'acb')的话.那么只会操作这个窗体对象的url,导致跳
转或reload(false).无论它是iframe还是一个被open的独立的窗体                            
 

     差异:

      .IE下target(name)的值不能包含如.、& 等特殊字符.否则会报参数错误.(解决办法.避免使用包含特殊字符的字符串,作为name的值) 

      .IE下name的值为null 或 undefined时,行为与其他浏览器有差异. 等价于 'null' 或 'undefined' .在期望打开多个窗口,又想设置其他窗口参数时,参数设置此2值.会被视为有效的name值. (解决办法,使用 '' 空字符,或'_blank'代替 null 或 undefined. 建议用优先考虑空字符,因为某些浏览器的早期版本不支持 _blank)

      .一个已经open的窗口,再次使用相同name,进行window.open操作时,个别浏览器可能不会保证该窗体的可见性(在最上层显示).比如Firefox在最小化某窗口后.(解决办法:可以借助win.focus() 操作强制该窗口在最上层显示.)

      .Opera,Chrome 下,如果一个iframe的id,与window.open的第二参数name同名.也具备同样效果. 其他浏览器则无此现象.

      .Opera9.6+ ,如果在另一个iframe内调用其self.open的第二参数name与其他iframe的name或id同名,则仍然会重新打开一个窗口. 而不是去操作该iframe.其他浏览器则无此问题


 
 
 
注1
IE6. left 一个奇怪值,top 相对屏幕

IE7. left 相对的位置,总是相对非最大化时,父页的left+10px左右偏移.(就是非最大化时,显示在哪,最大化时,就显示在哪.但并不总是相对非最大化时的父窗口left,比如在父窗口left很靠右的情况下,则其会新窗口会变成相对屏幕来显示)

  top 相对屏幕

IE8. left,top全部相对屏幕

IE9. left 同IE6类似top 相对屏幕总是0

window.open 浏览器差异.的更多相关文章

  1. 几个JavaScript的浏览器差异处理问题

    JQuery确实是个很好用的库,你可以不用考虑很多细节方面的事情.但很作为一个web前端,处理和了解浏览器差异一个重要问题.下面将介绍一些总结,先介绍没有使用js库的情况. 1. setAttribu ...

  2. Javascript不同浏览器差异及兼容方法

    原文链接:http://caibaojian.com/js-ie-different-from-firefox.html javascript的各种兼容就是为了解决不同浏览器的差异性,了解其中的差异能 ...

  3. 【转】window.scroll 浏览器滚动条的参数总结

    如内容超出单元格,则隐藏style="TABLE-LAYOUT: fixed" 让弹出窗口总是在最上面: <body onblur="this.focus();&q ...

  4. polyfill-eventsource added missing EventSource to window ie浏览器 解决方案

    今天遇到一个 ie浏览器显示空白,报错内容是: polyfill-eventsource added missing EventSource to window的问题, import 'babel-p ...

  5. JavaScript Window History 浏览器的历史

    window.history 对象在编写时可不使用 window 这个前缀. 为了保护用户隐私,对 JavaScript 访问该对象的方法做出了限制. 一些方法: history.back() - 与 ...

  6. window.open浏览器弹出新窗口被拦截—原因分析和解决方案

    最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,在本机实验没问题,到了服务器就被拦截了,火狐有拦截提示,360浏览器拦截提示都没有,虽然在自己的环境可以对页面进行放行,但是对用户 ...

  7. window.hostory(浏览器的历史记录)

    浏览器会对同一个窗口(选项卡)中访问的网页进行记录,不管我们是通过以下哪种方式改变网页,浏览器都会把改变后的网页记录下来,以便通过浏览器的前进和后退按钮,能够快速的切换到已经访问过的网页:  1)直接 ...

  8. jquery-ajax-async之浏览器差异

    最近的PC项目遇到了一个问题,日志记录程序会在1s内多次发起对首页的请求,一时间没有找到原因. 简单描述一下问题:访问一个首页的时候,由于代码质量不高的原因,访问就连接数据库,但是同时存在的问题是一秒 ...

  9. 浏览器差异bug汇总(js篇)

    获取滚动条高度 var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; safari浏览器时间函数 ...

随机推荐

  1. odoo 工作流

    odoo工作流 介绍 新版本的odoo开始减少workflow的使用,推荐使用workflow-ish的方式来处理工作流过程 很多模块中还是使用到工作流,这里我记录一个简单的实例,欢迎大家给出建议. ...

  2. C#简单的通用分页

    通用分页技术分析 需要返回不同的类型的数据--采用泛型实现该操作 需要提供不同的方法 上一页 上一页 第一页 最后一页 跳转到指定页 Demo 代码 using System; using Syste ...

  3. 用python做一个图片验证码

    看一下做出来的验证码长啥样 验证码分析 1. 有很多点 2. 有很多线条 3. 有字母,有数字 需要用到的模块: 1. random 2. Pillow  (python3中使用pillow) 安装p ...

  4. luoguP4389 付公主的背包 多项式exp

    %%%dkw 话说这是个论文题来着... 考虑生成函数\(OGF\) 对于价值为\(v\)的物品,由于有\(10^5\)的件数,可以看做无限个 那么,其生成函数为\(x^0 + x^{v} + x^{ ...

  5. 【BZOJ5137】Standing Out from the Herd(后缀自动机)

    [BZOJ5137]Standing Out from the Herd(后缀自动机) 题面 BZOJ 洛谷 题解 构建广义后缀自动机 然后对于每个节点处理一下它的集合就好了 不知道为什么,我如果按照 ...

  6. hdu 5828 Rikka with Sequence 线段树

    Rikka with Sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5828 Description As we know, Rik ...

  7. 用Visio画泳道图

    在一次会议中看到有个同事在讲解业务流程时画了一个与PD中很类似的泳道图,但是在图的左侧确有一个阶段的列,事后与他沟通,才知道他这个图是”拼”出来的,也就是说所有的图都是他一点点的在画图工具中做出来的. ...

  8. ARM JTAG 20P to Cortex JTAG 10P

  9. STM32 Seminar 2007 -- Timer

  10. 【Go命令教程】命令汇总

    [Go命令教程]1. 标准命令详解 [Go命令教程]2. go build [Go命令教程]3. go install [Go命令教程]4. go get [Go命令教程]5. go clean [G ...