为了编写能兼容各种浏览器的 javascript ,我们可能首先想的是用js检测各种浏览器的版本,针对性地编写不同的js代码.
伦理片 http://www.dotdy.com/
这种思想是不好的, 是不通用的.
正如本文本的题 : 不要检测版本,要检测对象
例子:
早期的Netscape 4和 IE 3 是不支持 document.body的 , 所在我们要在我们的js中针对 这两浏览器 避免使用document.body ,怎么做呢? 很多人一下子想到了, 检测浏览器的版本. 这样做不是最好的.
我们要检测浏览器 是否支持 某对象 , 而不是检测版本.
- if(document.body&&document.body.getElementsByTagName)
- {
- //可以调用 document.body
- //可以调用 document.body.getElementsByTagName
- }
假使if()条件不满足, 我们的页面中会少一些闪光点罢了, 但程序是不会出错的,还能正常运行.
下面是一个取得事件对象的例子:
其中的window.event 就是检测对象
- // 获得事件对象
- function $EVENTObject()
- {
- if(window.event)
- {
- return window.event;
- }
- var f=$EVENTObject.caller;
- while(f!=null)
- {
- var e = f.arguments[0];
- alert(e);
- if(e && (e.constructor==MouseEvent||e.constructor==Event||e.constructor==KeyboardEvent)) return e;
- f=f.caller;
- }
- }
检测对象而非版本:JavaScript跨浏览器编程
本文探讨了在JavaScript编程中,如何通过检测对象而非浏览器版本来实现跨浏览器兼容性,通过实例展示了如何避免使用document.body等特定于某些浏览器的对象,并提供了获取事件对象的代码示例。



被折叠的 条评论
为什么被折叠?



