原生透明判定是浏览器特征侦探的重要一环,之后的许多特效就靠它选择是原生透明还是滤镜透明。自从IE9决定支持原生透明后,此判定复杂多了,jQuery对于它的判定隐含深意。下面是jQuery1.42的代码:

div.innerHTML = "   <a href='/a' style='float:left;opacity:.25;'>a</a>";// Make sure that element opacity exists// (IE uses filter instead)// Use a regex to work around a WebKit issue. See #5145// http://dev.jquery.com/ticket/5145opacity: /^0.55$/.test( a.style.opacity ),

先不提IE8,IE7,IE6它们,肯定返回false。jQuery它为何选择如此特别的一个数字作为透明度呢?原先在jQuery1.32中,opacity是设为.5的,但发现firefox会错误地返回"0,5","0.5"不等于"0,5",因此出错。而为何使用正则表达式,我想这应该另有考量,但jQuery的类库作者们通常很少泄漏这些天机。

原因可能大部分来自新出的IE9技术预览版,由于缺少测试平台,下面的结论都是来自外国的:

  • IE之外的标准浏览器的opacity的类型为String,这是正确的,因为DOM的特性都该如此。
  • IE8等版本的opacity的类型是不确定,由代入值的类型确定,换言之,el.style.opacity = "0.5",那么类型为String,如果el.style.opacity = 0.5 ,那么类型为Number。
  • IE9最新预览版的opacity的类型为Number。
  • 当el.style.cssText = "opacity:.25"之时,IE8直接返回 ".25" ,而IE9pp2返回0.25。

最后赠送一个重要的信息:

0.25转换为二进制时非无限循环小数,因此在各平如一致,其他符合此条件的数值也可行。但像0.5,它在Opera9.2x中就会判定失败,因为会返回“0.50”。

因此我的判定如下:

div.innerHTML = "   <a href='/a' style='float:left;opacity:.25;'>a</a>";//IE8返回 ".25" ,IE9pp2返回0.25,chrome等返回"0.25"w3cOpacity: a.style.opacity == "0.25",

判定浏览器是否支持原生透明相关推荐

  1. 浏览器硬件检测原生js检测是否支持 视屏 音频能力

    abilitytest.js 文件 在webrtc 项目中 需要判断浏览器是否支持 调用 视屏音频 功能 import {message } from 'antd';// 这种方式在各个浏览器都可以( ...

  2. 无法扩展该卷 因为群集的数量将超过文件系统_浏览器将支持Python项目!Mozilla发布Pyodide...

    作者|Michael Droettboom 编译|王强.覃云 近日,Mozilla 发布了一个实验项目 Pyodide,旨在浏览器内运行一个完整的 Python 数据科学堆栈. 链接: https:/ ...

  3. 使IE6支持PNG透明图片的JS插件

    IE6不支持PNG透明图片,一路上在写一些模板的时候并没有对其进行处理.不过,这里给大家分享一个能够使得PNG图片在IE6浏览器下也拥有透明效果的JS插件. 使用很简单,只要加载该JS文件,然后将需要 ...

  4. 浏览器阻挡cookies_解决WordPress登录出现Cookies被阻止或者您的浏览器不支持

    摘要: Cookies被阻止或者您的浏览器不支持,要使用WordPress,您必须启用cookies.出现[caption id="" align="aligncente ...

  5. (一)检测浏览器是否支持websocket

    二.创建一个支持 WebSocket 的服务 1.从pywebsocket下载mod_pywebsocket(亲git clone),地址在这里啦~,这里请注意,mod_pywebsocket需要py ...

  6. delphi webbrowser 对象不支持_【Python 秘籍】排序不支持原生比较的对象

    问题 你想排序类型相同的对象,但是他们不支持原生的比较操作. 解决方案 内置的 sorted() 函数有一个关键字参数 key ,可以传入一个 callable 对象给它, 这个 callable 对 ...

  7. 确定浏览器是否支持某些DOM模块

    var supportDOM2Core = document.implementation.hasFeature("Core","2.0"); var supp ...

  8. 低版本IE浏览器不支持前端代码修改属性remove()的解决办法

    今天在工作中碰到了低版本IE浏览器不支持对象属性移除(remove)和添加(add)的方法,请教了同事结合在网上找到的资源最后写了这一段代码,完美的解决了一个前端基础问题,在此记录一下,希望可以帮助到 ...

  9. 浏览器支持java_为什么我下载了java并提示浏览器不支持j

    2008-08-14 Java是由Sun Microsystems开发的一种编程语言,它本身是一种面向对象(面向对象)的编程语言. JAVA游戏是目前在手机上使用最广泛的游戏. Java也被称为可跨平 ...

最新文章

  1. 铁线蕨算法(Adiantum)为低端智能手机提供磁盘加密服务
  2. javaweb web.xml文件详解
  3. python psi计算_KL散度,PSI,IV值之间的故事
  4. Agile in a Flash:万物皆渐进(14)
  5. 初识微信小程序第一弹
  6. 74-A/D指标,Accumulation/Distribution,积累/派发线,离散指标.(2015.7.1)
  7. 技术债务_如何处理技术债务并节省理智
  8. java中如何创建对话框_Java – 如何创建自定义对话框?
  9. sfc流程图怎么画_sfc第四次超级机器人大战流程图
  10. Atitti.数字证书体系cer pfx attilax总结
  11. SDL(01-10)
  12. 矩阵分析与应用(20)
  13. Java String常用方法
  14. 海康威视sdk语音转发(实现)implementation ‘com.hikvision.ezviz:ezviz-sdk:4.8.3‘(修改)
  15. 用u盘进不了pe计算机意外地,u盘装系统启动不了无法进入pe怎么办
  16. 第22节 NAT(网络地址转换)—实现公网IP和私网IP之间的转换
  17. 观测云产品更新|新增阿里云账户结算方式;新增 DQL 查询查看器;新增基础设施网络模块等
  18. JVM 为什么使用元空间替换了永久代?
  19. 5k显示器和4k显示器有什么区别
  20. RH850 F1L text段代码与S19文件解析

热门文章

  1. python对ip地址排序、对列表进行去重
  2. Linux系统管理和维护常用命令
  3. 使用ztree展示树形菜单结构
  4. 判断两个日期相差的天数
  5. “网络小偷”猖獗横行 探秘信息数据黑产链
  6. 云服务器租用成本节约在哪里?
  7. 14、ASP.NET MVC入门到精通——Ajax
  8. 1600802047 android 第三次作业(音乐播放器)
  9. fuel部署openStack
  10. javascript 取table中内容