判定浏览器是否支持原生透明
原生透明判定是浏览器特征侦探的重要一环,之后的许多特效就靠它选择是原生透明还是滤镜透明。自从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",
判定浏览器是否支持原生透明相关推荐
- 浏览器硬件检测原生js检测是否支持 视屏 音频能力
abilitytest.js 文件 在webrtc 项目中 需要判断浏览器是否支持 调用 视屏音频 功能 import {message } from 'antd';// 这种方式在各个浏览器都可以( ...
- 无法扩展该卷 因为群集的数量将超过文件系统_浏览器将支持Python项目!Mozilla发布Pyodide...
作者|Michael Droettboom 编译|王强.覃云 近日,Mozilla 发布了一个实验项目 Pyodide,旨在浏览器内运行一个完整的 Python 数据科学堆栈. 链接: https:/ ...
- 使IE6支持PNG透明图片的JS插件
IE6不支持PNG透明图片,一路上在写一些模板的时候并没有对其进行处理.不过,这里给大家分享一个能够使得PNG图片在IE6浏览器下也拥有透明效果的JS插件. 使用很简单,只要加载该JS文件,然后将需要 ...
- 浏览器阻挡cookies_解决WordPress登录出现Cookies被阻止或者您的浏览器不支持
摘要: Cookies被阻止或者您的浏览器不支持,要使用WordPress,您必须启用cookies.出现[caption id="" align="aligncente ...
- (一)检测浏览器是否支持websocket
二.创建一个支持 WebSocket 的服务 1.从pywebsocket下载mod_pywebsocket(亲git clone),地址在这里啦~,这里请注意,mod_pywebsocket需要py ...
- delphi webbrowser 对象不支持_【Python 秘籍】排序不支持原生比较的对象
问题 你想排序类型相同的对象,但是他们不支持原生的比较操作. 解决方案 内置的 sorted() 函数有一个关键字参数 key ,可以传入一个 callable 对象给它, 这个 callable 对 ...
- 确定浏览器是否支持某些DOM模块
var supportDOM2Core = document.implementation.hasFeature("Core","2.0"); var supp ...
- 低版本IE浏览器不支持前端代码修改属性remove()的解决办法
今天在工作中碰到了低版本IE浏览器不支持对象属性移除(remove)和添加(add)的方法,请教了同事结合在网上找到的资源最后写了这一段代码,完美的解决了一个前端基础问题,在此记录一下,希望可以帮助到 ...
- 浏览器支持java_为什么我下载了java并提示浏览器不支持j
2008-08-14 Java是由Sun Microsystems开发的一种编程语言,它本身是一种面向对象(面向对象)的编程语言. JAVA游戏是目前在手机上使用最广泛的游戏. Java也被称为可跨平 ...
最新文章
- 铁线蕨算法(Adiantum)为低端智能手机提供磁盘加密服务
- javaweb web.xml文件详解
- python psi计算_KL散度,PSI,IV值之间的故事
- Agile in a Flash:万物皆渐进(14)
- 初识微信小程序第一弹
- 74-A/D指标,Accumulation/Distribution,积累/派发线,离散指标.(2015.7.1)
- 技术债务_如何处理技术债务并节省理智
- java中如何创建对话框_Java – 如何创建自定义对话框?
- sfc流程图怎么画_sfc第四次超级机器人大战流程图
- Atitti.数字证书体系cer pfx attilax总结
- SDL(01-10)
- 矩阵分析与应用(20)
- Java String常用方法
- 海康威视sdk语音转发(实现)implementation ‘com.hikvision.ezviz:ezviz-sdk:4.8.3‘(修改)
- 用u盘进不了pe计算机意外地,u盘装系统启动不了无法进入pe怎么办
- 第22节 NAT(网络地址转换)—实现公网IP和私网IP之间的转换
- 观测云产品更新|新增阿里云账户结算方式;新增 DQL 查询查看器;新增基础设施网络模块等
- JVM 为什么使用元空间替换了永久代?
- 5k显示器和4k显示器有什么区别
- RH850 F1L text段代码与S19文件解析