mootools upgrate from 1.2 to 1.3 or 1.4
Update from 1.2 to 1.3
Pages 19
Clone this wiki locally
MooTools Core 1.3 is backwards compatible with all the documented features of MooTools Core 1.2 through an inbuilt compatibility layer. This guide helps you avoid minor problems while updating. If you want to drop the compatibility layer see the upgrade guide: Upgrade from 1.2 to 1.3
Function.prototype.bind
MooTools has provided an implementation of this method for years, however the new ECMAScript 5 specification describes a different behavior. If you use the compatibility layer, the 1.2 version of "bind" will be used. If you drop the compatibility layer, the implementation equals to that of the ECMAScript 5 specification and it uses the native implementation of a browser, if available (Chrome 6, Firefox 4, …).
The difference in both versions is that the specification takes any amount of arguments and the MooTools version only takes an array as second argument.
Example:
myFn.bind(this, arg1, arg2, arg3); // ES5 Spec
myFn.bind(this, arguments); // MooTools Core 1.2
To avoid possible problems once you drop the compatibility layer you can use the following script to automatically convert all occurrences of bind with arguments to the "pass"-method that we provide in MooTools.
To ensure compatibility with the plugins you release, you should not use bind with arguments (ie, just use .bind(thisArg)) and resort to using Function.prototype.pass. This method works like our old implementation of "bind" with reversed argument order.
Example
myFn.bind(this, arguments); // DON'T do this anymore
myFn.pass(arguments, this); // YES
Element.get / Element.set compatibility
In the past, these two methods were able to take any amount of arguments. This was undocumented but used by some people. To bring back the old 1.2 behavior you can use the following script: Element.get/Element.set.
Please use the above script at your own risk. In order to update from 1.2 to 1.3, you should replace any occurrences of the Element.get method with options like this:
myElement.get('tween', options); // WRONG
myElement.set('tween', options).get('tween'); // YES, INDEED.
Request
The get/post/put/delete methods used to accept the URL as argument rather than the data. Our documentation however only described to send data via those methods, so this behavior was fixed in 1.3. Instead of passing the URL via the .get/.post/.put/.delete methods, pass the URL as option when you create the Request instance.
JSON (since 1.3.1)
JSON.decode can throw errors when the secure argument is set to true. This is the same behavior as the native JSON.parse. Also this native function will be used if it's available (in all modern browsers). Previously just null was returned.
JSON.decode('no valid json string', true); // `null` in < 1.3.1
try { // 1.3.1
JSON.decode('no valid json string', true);
} catch(e){
console.log('failed to decode JSON');
}
// or a little shorter and easier to update
JSON.decode.attempt(['no valid json string', true]);
===========
Upgrade from 1.2 to 1.3 or 1.4
Pages 19
Clone this wiki locally
This is a list of the API changes made from 1.2 to 1.3. It allows you to drop the compatibility layer mostly by doing search and replace. If you just want to update to MooTools Core 1.3 with your existing code, see Update from 1.2 to 1.3.
Core
- $chk(value) => (value != null)
- $A(item) => Array.from(item) // Note: Array.from does not always return a new array but just ensures that the return value is an array.
- $splat => Array.from
- $clear => use the native clearTimeout when using fn.delay, use clearInterval when using fn.periodical.
- $defined => (value != null)
- $each => use Array.each for arrays, Object.each for objects
- $empty => No replacement, use function(){}
- $extend(source, extended) => Object.append(source, extended)
- $merge(a, b) => Object.merge({}, a, b)
- $mixin(a, b) => Object.merge(a, b)
- $lambda => Function.from
- $random => Number.random
- $time => Date.now
- $type => typeOf // Note: returns a string 'null' on empty objects as opposed to "false" in 1.2
- $unlink => Array.clone or Object.clone
- $arguments => No replacement
- Native => Type (see Core.js)
- Array.type / String.type / Number.type / … => Type.isArray / Type.isString / Type.isNumber / …
- Hash and $H were deprecated and moved from Core to More. Use plain objects instead of Hash. You can find methods to manipulate objects on Object. You can find all 1.2 functionality of Hash in MooTools More 1.3.
Browser
Engine detection was changed in favor of user-agent detection. Browser.Engine was deprecated and according properties on the Browser object were added:
- Browser.Engine.trident => Browser.ie
- Browser.Engine.gecko => Browser.firefox
- Browser.Engine.webkit => Browser.safari or Browser.chrome
- Browser.Engine.presto => Browser.opera
- Browser.Platform.ipod => Browser.Platform.ios
- $exec => Browser.exec
Array
- $pick => Array.pick or [a, b, c].pick()
- Array.extend => Array.append
Function
- $try => Function.attempt
- myFn.run(args, bind) => myFn.apply(bind, Array.from(args));
- myFn.create => Use the according functions like .pass, .bind, .delay, .periodical
- myFn.bindWithEvent => deprecated
- myFn.bind(this, [arg1, arg2, arg3]) => myFn.bind(this, arg1, arg2, arg3) OR myFn.pass([arg1, arg2, arg3], this)
Element
- element.injectInside, .injectBefore, .injectAfter, .injectBottom, .injectTop => element.inject(context, where); // where = inside, bottom, …
- element.grabTop, … => element.grab(context, where) // see above
- element.hasChild(item) => item !== element && element.contains(item)
- $$ now only accepts a single selector, an array or arguments of elements
- Selectors.Pseudo => Slick.definePseudo(name, fn)
Changes for 1.4
Event
- Event => DOMEvent
- Event.Keys.foo = 49 => DOMEvent.defineKeys(49, 'foo');
mootools upgrate from 1.2 to 1.3 or 1.4的更多相关文章
- 初次接触mootools
以下是今天所学代码,网上有这篇博客可供参考,另外还是推荐官方文档 ,以下是今天所敲代码: //用mootools创建类的方式: //方式1:用标准方式传入一个对象字面量 /* var Person = ...
- Mootools插件-闪烁的标题
转自:http://www.cnblogs.com/see7di/archive/2012/10/09/2716024.html 回想起来,我已经好久没有写点啥了,尤其是关于Mootools方面的东西 ...
- js在mootools框架下的new Class
首先,在HTML文件中引入mootools.js. mootools-more.js.mootools-core.js,然后就能使用mootools封装的一些特性. 几乎类似于面向对象. mootoo ...
- mootools里选择器$,$$,$E,$ES等的区别
区别就是 $和$$都是1个参数, $适用于ID,或者ID代表的对象 $$适用于CSS选择器 $E和$ES,有2个参数,第二个参数是可选参数代表(filter,即某个ID范围里的元素) $E('inpu ...
- mootools和jquery冲突的解决
mootools-jquery 今天在做EcStore前台的做效果时,由于Jquery的插件比较多,于是就使用了Jquery的插件,但是发现会引起Mootools的冲突. 于是猛找资料,终于找到了,现 ...
- 【MooTools】
MooTools a compact javascript frameworkhttp://mootools.net/docs/core 30天学会 MooTools 教学(1): 认识MooTool ...
- MOOTOOLS简单操作应用知识
在项目中我们经常需要用到全选/反选.等操作按钮. 基于mootools框架与jquery框架不一致.导致缓慢. $('chkall').addEvent('click',function(){ if( ...
- MOOTOOLS和JQUERY如何同时存在,解决冲突
mootools-jquery 今天在做EcStore前台的做效果时,由于Jquery的插件比较多,于是就使用了Jquery的插件,但是发现会引起Mootools的冲突. 于是猛找资料,终于找到了,现 ...
- MooTools 异步请求验证
http://www.chinamootools.com/ 问题 MooTools 异步请求例子 <{foreach from=array('0','1','2','3','4') item=c ...
随机推荐
- sprint计划会议
会议召开时间表 日期 时间 内容 05/09 21:00-22:00 讨论题目(未果) 05/10 21:00-21:30 确定题目(网络助手) 05/13 21:00-21:45 讨论软件页面设计 ...
- LeetCode Subsets (DFS)
题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...
- spark读hdfs文件实现wordcount并将结果存回hdfs
package iie.udps.example.operator.spark; import scala.Tuple2; import org.apache.spark.SparkConf; imp ...
- Xen虚拟机磁盘镜像模板制作(二)—Windows Server 2008(2012)
在<Xen虚拟机磁盘镜像模板制作(一)—Windows Server 2008(2012)>一文中,我们已经成功制作出了Windows Server磁盘镜像.下面我们说明下如何通过它来生成 ...
- log4j 分类输出
一个log4j的问题也是折磨了我两天了. 终于算是实现了个符合需求的小demo.然而,我必须吧log4j搞定,这个乐塞. 需求描述: 用xml配置文件,将debug.info.warn.error分类 ...
- Highcharts的基本属性和方法详解
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用. 目前Hig ...
- 堆排序(C++版)
#include <iostream> using namespace std; void HeapAdjust(int* a, int start, int n) { int max=s ...
- ZOJ 1016 Parencodings
原题链接 题目大意:有两串数字P和W.数组P中,数字P[i]表示第i个右括号之前的左括号个数.数组W中,数字W[i]表示在第i个右括号和与它匹配的左括号之间的右括号的个数(包括本身).给出一个数组P, ...
- jQuery 事件 - load() 方法
例子:$("img").load(function(){ $("div").text("Image loaded"); }); 定义和用法 ...
- 三级联动查询全国省市区(xml与数据库)
提供有china.xml和china.sql文件,实现全国省市区的三级联动效果 一.xml实现 import java.awt.EventQueue; import javax.swing.JFram ...