Update from 1.2 to 1.3

lorenzos edited this page on 8 Jul 2011 · 2 revisions

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.

Replace bind

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

arian edited this page on 13 Jun 2012 · 1 revision

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的更多相关文章

  1. 初次接触mootools

    以下是今天所学代码,网上有这篇博客可供参考,另外还是推荐官方文档 ,以下是今天所敲代码: //用mootools创建类的方式: //方式1:用标准方式传入一个对象字面量 /* var Person = ...

  2. Mootools插件-闪烁的标题

    转自:http://www.cnblogs.com/see7di/archive/2012/10/09/2716024.html 回想起来,我已经好久没有写点啥了,尤其是关于Mootools方面的东西 ...

  3. js在mootools框架下的new Class

    首先,在HTML文件中引入mootools.js. mootools-more.js.mootools-core.js,然后就能使用mootools封装的一些特性. 几乎类似于面向对象. mootoo ...

  4. mootools里选择器$,$$,$E,$ES等的区别

    区别就是 $和$$都是1个参数, $适用于ID,或者ID代表的对象 $$适用于CSS选择器 $E和$ES,有2个参数,第二个参数是可选参数代表(filter,即某个ID范围里的元素) $E('inpu ...

  5. mootools和jquery冲突的解决

    mootools-jquery 今天在做EcStore前台的做效果时,由于Jquery的插件比较多,于是就使用了Jquery的插件,但是发现会引起Mootools的冲突. 于是猛找资料,终于找到了,现 ...

  6. 【MooTools】

    MooTools a compact javascript frameworkhttp://mootools.net/docs/core 30天学会 MooTools 教学(1): 认识MooTool ...

  7. MOOTOOLS简单操作应用知识

    在项目中我们经常需要用到全选/反选.等操作按钮. 基于mootools框架与jquery框架不一致.导致缓慢. $('chkall').addEvent('click',function(){ if( ...

  8. MOOTOOLS和JQUERY如何同时存在,解决冲突

    mootools-jquery 今天在做EcStore前台的做效果时,由于Jquery的插件比较多,于是就使用了Jquery的插件,但是发现会引起Mootools的冲突. 于是猛找资料,终于找到了,现 ...

  9. MooTools 异步请求验证

    http://www.chinamootools.com/ 问题 MooTools 异步请求例子 <{foreach from=array('0','1','2','3','4') item=c ...

随机推荐

  1. msp430 问题及解决记录

    ----------------------------- 2015.4.28 问题:开发板串口显示的内容为乱码 解决:使用的是原先产品主板的15200的波特率设置,但看来或者是开发板不支持11520 ...

  2. python发布文件(windows)

    怎样发布文件 首先发布本地文件有一个好的用处,就是省去了朋友同import的时候还要使用sys.path,省的自己出错 1.新建文件夹d:\ tool 在的d:\tool文件夹中建立login.py ...

  3. JSONP解决ajax跨域问题

    在A域名下,用ajax请求B域名下的请求,会报类似这样的错误:No 'Access-Control-Allow-Origin' header is present on the requested r ...

  4. 解决SimpleCursorAdapter不能自动更新的问题

    假设场景是这样的:你使用SimpleCursorAdapter显示数据,并监听数据的变化:在数据发生变化的时候,调用cursor的requery,期待UI显示也跟着变化. 但是,你可能会发现,UI并没 ...

  5. Oracle执行语句跟踪(2)——使用10046事件实现语句追踪

    接上篇博文Oracle执行语句跟踪(1)--使用sql trace实现语句追踪,一旦我们通过会话追踪获取到超时事物的执行语句,就可以使用10046事件对语句进行追踪. 启用10046事件追踪的方式 S ...

  6. 无法Ping通windows 7主机

    今天在使用Filezilla FTP_SERVER新建了一个windows主机上的FTP服务器. 建立完成之后,从MAC上无法进行连接也甚至连主机也无法连接,怀疑是防火墙的问题. 网上一搜确实是,但是 ...

  7. Xcode编译异常和警告汇总(持续更新中)

    1.Method definition for 'xxx' not found xxx的方法没有实现 出现原因.h声明了xxx方法但是.m没有实现xxx方法 解决方法:在类的.m文件实现xxx方法   ...

  8. CentOS6.3 Hostname设定修改

    今天装了个CentOS6.3恩,基本上是参照百度文库上面的文章来安装的 http://wenku.baidu.com/link?url=K0tqotryKLFHhJGicx1nC-hsgfWhL3OI ...

  9. Android 中类似ModelWindow的一个实现

    Android里一般的画面(Activity)都是尽量占满整个屏幕,这样符合单线程的设计, 而有些类似popup之类的子画面,却希望他弹出来的时候表现的如同web的模态窗口 (ModelWindow, ...

  10. HTML5里autofocus属性

    转载:http://www.webhek.com/html5-autofocus/ HTML5给我们带来了一大堆神奇的东西.以前需要用JavaScript和Flash完成的任务,例如表单校验,INPU ...