代码兼容大全 - pod4g/tool GitHub Wiki
-
通过document对象获取window对象
// IE9+ 用defaultView获取 // IE8- 用parentWindow获取 var win = document.defaultView || document.parentWindow;
-
判断是混杂模式还是标准模式(用于判断IE)
// 所有浏览器都支持这个属性
// 如果是IE浏览器,且IE浏览器的文档模式是“杂项(Quirks)”,则mode的值是"BackCompat"
// 其他浏览器为"CSS1Compat"
var mode = document.compatMode;
- 判断文档类型(用于IE)
// IE6以上的浏览器支持这个属性
// 返回相应的版本号
// 如IE7返回数字 7
// 其他非IE浏览器返回undefined
var version = document.documentMode;
- navagitor的有用的属性
// I67+都支持的属性
navigator.appCodeName; // Mozilla
navigator.appName; // Microsoft Internet Explorer or Netscape ...
navigator.platform; // Win32 or MacIntel ...
-
getOwnPropertyDescriptor 及 defineProperty的兼容性问题
// {enumerable: true, configurable: true ,get , set} // ch/ff/op // {enumerable: true, configurable: true ,undefined , undefined} // safari var npDes = Object.getOwnPropertyDescriptor(Node.prototype, 'nodeValue'); // {enumerable: true, configurable: true, set , get} // ch/ff/op // {enumerable: true, configurable: false, get: undefined, set: undefined} // safari var epDes = Object.getOwnPropertyDescriptor(Element.prototype, 'innerHTML'); // 可以看到getOwnPropertyDescriptor在safari中存在兼容性问题 // safari TypeError: Attempting to change the getter of an unconfigurable property. // ch/ff/op done!! Object.defineProperty(Element.prototype,'innerHTML', { get: function(){ return 1; } })