Fdream's Blog
专注于WEB前端开发
Powered by Google
1 2 3 4 5 6 7 8 9 10

自己一直在用MooTools框架,偶然看见这篇文章,作者是MooTools Team的成员之一,讲解了jQuery和MooTools的一点点区别,主要是我觉得他写JavaScript代码和他的思维方式很值得学习。另外,对JavaScript的编程思想和对框架的选择都有很多很好的建议,对于犹豫在各种框架上的人有很好的指导作用,另外对于想深入对框架进行研究或者想自己开发框架的人也有很好的建议。文章虽然很长,但是我觉得不错,然后就翻译了。水平有限,文笔粗陋,其中有少数地方自己都觉得翻译得有些牵强,欢迎批评指正。

由于文章太长,我这里就分了上下两篇,下文在这里:[翻译]jQuery和MooTools的真正区别(下)

原文:jQuery, MooTools, which is the most popular and well represented framework and What Really Makes One Framework Different From Another

标题:

jQuery, MooTools, which is the most popular and well represented framework and What Really Makes One Framework Different From Another

jQuery和MooTools,哪一个框架更受欢迎有更好的表现以及它们之间的真正区别是什么

I've been experimenting with several javascript libraries as well… the problem is finding the right mix of features… Ext.js is very extensive, but very large and complex: steep learning curve.

我一直在尝试一些不同的JavaScript库,试图找到一些合适的特性组合:Ext.js非常好扩展,但是太大太复杂,学习难度很大...

在一个iframe中,有这样一段js:

参考代码: [复制代码] [保存代码]

var clear_btn = parent.document.getElementById('clearbtn');
clear_btn.onclick = function () {
    //...
    PSearch.clearResult(); // PSearch这个对象在该页面引用的js文件中,全局变量
    //...
};

当在我的IE 7下的时候居然会out of memory,而在clearResult中并没有干任何事情!在IE 8下的时候,却是找不到PSearch,很诡异……突然想起曾经碰到过类似的问题,于是改成这样...

Mootools一个小bug
17 多云 2008-9
Fdream 发表于 Ajax Web, 已被阅读 1511 次评论 0 条
关键词:javascript mootools

在Mootools 1.2正式版中,有一个很小很诡异的bug,一般碰不上这么bt的事情。在页面里面有iframe,并且会涉及到跨域的问题时,若在页面执行过程中改变代理脚本,在改变代理脚本的前后会出现JavaScript线程假死的情况——所有的JavaScript事件都会失去响应,而此时若还原默认的脚本设置,则又可恢复正常。后来发现问题出在Event对象中,有这么几行:

参考代码: [复制代码] [保存代码]

win = win || window;
var doc = win.document;
event = event || win.event;

经测试,发现在这里居然取不到win.document——拒绝访问(Permission Denied)!打印了一下win的属性,发现已经是被mootools打包后的window对象了,但不知为何里面的所有属性都是拒绝访问。直接很裸地试着直接取“document”,居然成功了!修改此段代码如下:

简单的测试,但是Chrome的JavaScript运行效率的确是太惊人了!贴几张图,对比一下,分别是Chrome 0.2 Beta, IE 7, Firefox 3:

Chrome:

偶然发现,在IE 7下,打开本地页面时,居然会出现onload事件发生在ondomready的前面!而在FF下,ondomready一直发生在onload事件以前,诡异的IE,不得不再写两行代码来判断js是不是已经执行过初始化方法了……

想写一个Mootools的select插件,和html里的select类似的功能,不过能够完全自己定制界面,而且不会像默认控件一样永远在最高层。在实现一个功能时,当时由于思维出了点偏差,碰到一个奇怪的问题:到底是onclick事件先发生还是onblur事件先发生呢?

假设有两个div,id分别为a和b,在a上绑定onclick事件,在b上绑定onblur事件,事先通过focus()方法让光标聚焦在b上,这样,当点击a时,将分别发生onclick和onblur事件,但是,哪个会先发生呢?

特别在IE和Firefox下测试了一下,测试结果比较诡异:

在IE6下:onblur和onclick事件的发生顺序是完全随机的,有时候onblur在前,有时候onclick在前,但两者的次数差不多是相同的;

在FF2下:始终是onclick事件在前。

最近几天和另外一个同事在写Mootools 1.2beta2的注释文档,总算基本完成了,show一下在vs 2008下的intellisense:

创建一个新的实例:

相关参数:

第二个参数...

VS 2008的新增的一个巨大特性就是增加了Javascript的调试功能(见:VS2008中JavaScript的智能提示和调试很强大)。没有细说有多强大,其实这种提示和调试可以强大到和VS中的C#一样,javascript的 Intellisense甚至可以跨文件,自动识别类型。不过你的注释得写成这样:

引用内容:

function Element(element, properties){

///<summary>

/// Element类,创建一个HTML Element实例

///</summary>

///<param name="element" type="mixed">Element的标签名或者一个当前的DOM元素</param>

///<param name="properties" type="object">可选:Element的属性集合,如{'href': 'http://pplive.com', 'class': 'myClass'}</param>

///<returns type="Element"/>

}

这样,当你new一个Element的时候,会出现关于Element这个构造函数作用的提示,键入第一个括号以后,会出现参数提示,键入最后一个括号,再键入一个点,就会出现这个类的所有属性和方法提示。可以跨文件提示,实在是很好用~

1 2 3 4 5 6 7 8 9 10
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 1.4531622 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号