2008/12/09

常用的DOM操作、事件

来自:Dustin Diaz,我加上了删除事件。
var Dom = {
get: function(el) {
if (typeof el === 'string') {
return document.getElementById(el);
} else {
return el;
}
},
add: function(el, dest) {
var el = this.get(el);
var dest = this.get(dest);
dest.appendChild(el);
},
remove: function(el) {
var el = this.get(el);
el.parentNode.removeChild(el);
}
};
var Event = {
add: function() {
if (window.addEventListener) {
return function(el, type, fn) {
Dom.get(el).addEventListener(type, fn, false);
};
} else if (window.attachEvent) {
return function(el, type, fn) {
var f = function() {
fn.call(Dom.get(el), window.event);
};
Dom.get(el).attachEvent('on' + type, f);
};
}
}(),
remove:function(){
if (window.removeEventListener) {
return function(el, type,fn) {
Dom.get(el).removeEventListener(type, fn,false);
};
} else if (window.detachEvent) {
return function(el, type, fn) {
Dom.get(el).detachEvent('on' + type);
};
}
}()
};

使用时类似:Event.add('domId', 'click',install);
AS 中的 tweener 语法挺像的:
Tweener.addTween(event.displayObject3D, {
rotationY:180,
time:0.5,
transition:"easeOutQuart"
} );

Labels: , ,

2008/11/27

分享2个bookmarklet


一个是 Aardvark, 一点不逊于 firebug 的东西,在许多介绍 web 开发用的 firefox 插件的文章都没有提到过。Aardvark 在不太熟悉现有 HTML 结构与已有 CSS 规则时显得特别方便,因为通过它可以方便的查阅整个 HTML DOM 的相关信息,包括实时地删除它们、改变颜色、查看格式化的部分源代码等等。 Aardvark 同时提供了 firefox 插件和 bookmarklet。
另一个是 Jash, 跟 ipython 一样,作为一个好的 console,自动补全自然必不可少,console 本身可以做为很好的学习工具。Jash 同样是基于 bookmarklet, 不用考虑跨浏览器的问题。比如我现在大部分时间都用 safari, 配合 quicksilver 的 safari module,就可以方便地调用。Jash 可以实时地写入 CSS, 这在 IE 中就特别有用,比如要测试远程的 CSS 规则,在 Jash 中 ctrl+s 再把样式定义写进去就可以了。Jash 本身也是用 javascript 写成的,所以如果你觉得哪个地方用得不顺手,完全可以自己改写它。
这2个东西都有良好的快捷键支持,好软件都有这个特征。
写完这个就发现:
15 Must-Have Bookmarklets For Web Designers And Developers
另外,这个周末会去 D2 论坛看看,可以看到一些熟悉的 ID。

Labels: , , ,

2008/08/15

发点牢骚

今天打开 greader,看到一堆在评论 ECMAScript 4 被停滞的文章,刚好最近一直在做 javascript 方面的工作,相当大一部分时间都是在解决跨浏览器之间的问题,代码中也充斥着判断,如果是 IE 就怎么样,如果不是又怎么样。一个合理的情况这些判断是不应该存在的,包括 quirksmode.org 这样的网站都不应该存在(现实情况是 google 会经常把你带到这里去)。这使开发人员不能集中注意于任务,而要分心在实现手段上了。相反,flash 开发中基本都是一次开发,到处分发。特别是基于 ECMAScript 4 的 actionscript3,引入了诸如 namespaces、packages 等概念,让人想着以后 javascript 也能这样写就爽了,可是,现在就这样泡汤了。不过还好 actionscript 会继续按照开发社区的呼声走下去,支持那些合理的东西,毕竟 flash player 独立些,不用屈从于厂商的意愿,或者说它本身就是一厂商。

Labels: ,