zepto.js
Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api。 如果你会用jquery,那么你也会用zepto。 设计的目的是提供jquery的类似的APIs,但并不是100%覆盖jquery为目的。zepto设计的目的是有一个5-10k的通用库、下载并执行快、有一个熟悉通用的API,所以你能把你主要的精力放到应用开发上。用一个script标签引入Zepto到你的页面的底部:
...
</body>
<script src=zepto.min.js></script>
</html>
如果你需要兼容ie浏览器,你可以用回jquery。 需要注意ie10以后不再支持条件注释(为了提高与HTML5 的可互操作性和兼容性,Internet Explorer 10 标准模式和Quirks 模式中删除了对条件注释的支持),因此,我们建议以下的document.write方法:
<script>
// document.write方式创建script, 移动端或现代浏览器用zepto, 旧浏览器用jquery
document.write('<script src=' + ('__proto__' in {} ? 'zepto' : 'jquery') + '.js><\/script>');
</script>
附:每一个引用类型的实例中,都有一个指针,指向其原型对象。这个指针在非IE浏览器里通过__proto__表示,而在IE里不提供。看如下代码:
obj = {};
obj.__proto__.toString = function() { return "hello"; }
test = {};
alert(test); //输出结果就是hello。
原因在于JavaScript中只有一个Object原型对象,第二行,修改了这个原型对象的toString成员变量,而Object原型对象是所有引用类型实例共享的,只有一个,所以其他对象调用toString()也就发生了变化。IE不提供这个__proto__,使得程序员无法获取到Object原型对象,也就无法修改这个老祖宗的属性了。这样做就更安全了。因为__proto__不是标准方法,标准的方法是Object.getPrototypeOf();可以Object.getPrototypeOf(obj)。
注:两个下划线,后跟五个字符”proto”,最后又是两个下划线.当一个对象被创建时,它的 __proto__ 属性和内部属性[[Prototype]]指向了相同的对象 (也就是它的构造函数的prototype属性).改变__proto__ 属性的值同时也会改变内部属性[[Prototype]]的值,除非该对象是不可扩展的.可以通过这个属性验证是否是IE
var noIe = ('__proto__' in {});
alert(noIe);
//或者
if('__proto__' in {}){非ie}
else{ie}