JavascriptYUI读码日记之YAHOO.util.Dom-Part.3
作者:西格咒_779 | 来源:互联网 | 2022-02-27 16:23
在YAHOO.util.Dom中能发现很多有趣的东西。下面先说下toCamel的函数,感谢小马帮助我理解了这个函数。toCamel把指定名称替换为驼峰写法,比如把border-width替换为borderWidth。
var patterns = { HYPHEN: /(-[a-z])/i, ROOT_TAG: /^body|html$/i }; var toCamel = function(property) { // 如果没有 -[a-z] 字母,则直接返回 if ( !patterns.HYPHEN.test(property) ) { return property; } // 如果有缓存,直接返回替换后的值 if (propertyCache[property]) { return propertyCache[property]; } // 使用正则替换 var converted = property; while( patterns.HYPHEN.exec(converted) ) { converted = converted.replace(RegExp.$1, RegExp.$1.substr(1).toUpperCase()); } // 存入缓存 propertyCache[property] = converted; return converted; };在 YAHOO.util.Dom 中,getStyle 函数考虑了更多不同浏览器兼容性方面的问题,代码如下 // 使用 W3C DOM 标准的浏览器,比如 Firefox、Opera、Safari if (document.defaultView && document.defaultView.getComputedStyle) { getStyle = function(el, property) { var value = null; // 重命名部分 CSS 样式名 if (property == 'float') { property = 'cssFloat'; } // 获取通过 CSS 加上去的属性 var computed = document.defaultView.getComputedStyle(el, ''); if (computed) { value = computed[toCamel(property)]; } return el.style[property] || value; }; // 如果是 IE 浏览器 } else if (document.documentElement.currentStyle && isIE) { getStyle = function(el, property) { switch( toCamel(property) ) { // “转换”名称为 IE 可以认识的 case 'opacity' : var val = 100; try { val = el.filters['DXImageTransform.Microsoft.Alpha'].opacity; } catch(e) { try { val = el.filters('alpha').opacity; } catch(e) { } } // 百分比 return val / 100; case 'float': property = 'styleFloat'; default: var value = el.currentStyle ? el.currentStyle[property] : null; return ( el.style[property] || value ); } }; } else { // 获取内联样式 getStyle = function(el, property) { return el.style[property]; }; }另外,PPK 在他的 Blog 上的有关 getStyle 的阐述,也很精彩,有兴趣的可以去看下。
推荐阅读
web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ...
[详细]
蜡笔小新 2024-12-24 19:26:54
预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ...
[详细]
蜡笔小新 2024-12-20 09:57:07
在前端开发中,数字滚动动画是一个常见的需求。本文将详细介绍如何使用CSS3和React构建一个数字滚动动画组件,包括组件的代码实现和样式设计。如果您对HTML版本感兴趣,欢迎留言获取。 ...
[详细]
蜡笔小新 2024-12-13 13:48:05
本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ...
[详细]
蜡笔小新 2024-12-28 04:11:47
在跨浏览器开发中,一个常见的问题是关于如何在鼠标悬停时显示图片提示信息。本文深入探讨了 IE 浏览器对 IMG 元素 alt 属性的特殊处理,并提供了最佳实践建议。 ...
[详细]
蜡笔小新 2024-12-23 12:35:10
本文详细比较了CSS选择器和XPath在Selenium中通过页面结构定位元素的优劣,并提供了具体的代码示例,帮助读者理解两者在不同场景下的适用性。 ...
[详细]
蜡笔小新 2024-12-21 08:56:18
本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ...
[详细]
蜡笔小新 2024-12-20 18:36:06
本文详细探讨了JavaScript中四种获取CSS样式的不同方法:style、currentStyle、getComputedStyle和getBoundingClientRect。每种方法的适用场景及其兼容性问题,并提供了解决方案。 ...
[详细]
蜡笔小新 2024-12-18 19:27:53
本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ...
[详细]
蜡笔小新 2024-12-18 11:08:28
本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ...
[详细]
蜡笔小新 2024-12-17 18:28:07
Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ...
[详细]
蜡笔小新 2024-12-16 16:06:18
在使用Firefox浏览器打开本地HTML文件时,尝试调用Canvas的drawImage方法可能会遇到NS_ERROR_NOT_AVAILABLE错误。本文探讨了这一问题的原因及解决方案。 ...
[详细]
蜡笔小新 2024-12-13 22:02:02
本文介绍了如何利用Selenium和Python通过执行JavaScript代码来控制网页中的滚动条,包括垂直和水平滚动条的控制,以及特定元素的聚焦技术。 ...
[详细]
蜡笔小新 2024-12-14 14:25:02
本文详细介绍了在Ubuntu 7.10操作系统上安装多种常用软件的方法,包括RAR压缩工具、即时通讯软件Pidgin、办公软件永中Office 2007试用版、多线程下载软件MultiGet及d4x、FTP客户端gFTP与FireFTP插件,以及P2P下载工具aMule。每部分都提供了具体的安装步骤和配置方法。 ...
[详细]
蜡笔小新 2024-12-09 10:29:31
本文探讨了在使用HTML5 WebSocket技术构建浏览器内聊天室时遇到的连接不稳定问题,并提供了可能的解决方案和调试方法。 ...
[详细]
蜡笔小新 2024-12-07 17:07:00