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 ...
随机推荐
- C语言----变量及作用域 、 指针 、 指针和数组 、 进程空间 、 字符串
1 使用程序来模拟放球.取球的问题 1.1 问题 栈是一种特殊的线性表,它的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称为运算受限的线性表. 栈的定义是限制仅在表的一端进行插入和删 ...
- 用正则表达式获取所有img标签
public static string ReplaceOrAddImageTitle(string content, string title) { Regex reg = new Regex(@& ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
- jsb里出现的 Invalid Native Object的一次bug修复的思考
Cocos2d: jsb: ERROR: File /Users/dcx_JD/Documents/cocos2d-x-2.2.2/scripting/javascript/bindings/gene ...
- PAT (Basic Level) Practise:1002. 写出这个数
[题目链接] 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各 ...
- 推荐!Sublime Text 最佳插件列表
本文由 伯乐在线 - 艾凌风 翻译,黄利民 校稿.英文出处:ipestov.com.欢迎加入翻译组. 本文收录了作者辛苦收集的Sublime Text最佳插件,很全. 最佳的Sublime Text ...
- LinkedHashSet与TreeSet
区别 类型 实现 特点 TreeSet hashMap.实现sortedSet接口 升序(基本类型--),自定义 LinkedHashSet HashSet 初始顺序 **注意点: 1.treeSet ...
- 2015GitWebRTC编译实录7
2015.07.20 libvoiceengine 编译通过去除了mock测试代码,mock是用来进行测试的,意义不大.另外会报一个常量错误,需要定义WEBRTC_MAC宏,只定义WEBRTC_IOS ...
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...
- Android开源项目大全之工具库
http://www.neast.cn/forum.php?mod=viewthread&tid=5487&fromuid=5