<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/onewww" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/onewww" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 28 Nov 2008 02:27:43 GMT</lastBuildDate><title>LlinZzi's Blog</title><description>我又修改了验证码，spam你再来试试！</description><link atom:type="text/html">http://onewww.net/blog/</link><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/</id><link xmlns="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://onewww.net/blog/atom.asp"></link><generator xmlns="http://www.w3.org/2005/Atom" uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator><pubDate>Fri, 28 Nov 2008 02:27:43 GMT</pubDate><item><title>JavaScript面向对象编程[三] 自定义事件</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=126</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=126</id><description>继 &amp;lt; JavaScript面向对象编程[二] 事件处理&amp;gt;(&lt;a href=&quot;http://onewww.net/blog/article.asp?id=124&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://onewww.net/blog/article.asp?id=124&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;上一篇给foo类增加了&lt;br/&gt;addEvent和removeEvent方便事件的注册与注销&lt;br/&gt;&lt;br/&gt;这次总结下自定义事件的几种方法&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;script type=&amp;#34;text/javascript&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;!--&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var foo = function(){ this.init.apply(this,arguments);};&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foo.prototype = {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;init:function(_name){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.name = _name;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.addEvent(&amp;#39;click&amp;#39;,document,this.say,this,&amp;#39;hello world!&amp;#39;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;say:function(_ev,_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(this.name +&amp;#39;:&amp;#39; +_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.stop();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.onSay(_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;stop:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.removeEvent(&amp;#39;click&amp;#39;,document,this.say);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addEvent:function(_event,_element,_fn,_scope,_args){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = Array.prototype.slice.call(arguments, 0);&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;scope = args.length&amp;gt;0?args.shift():window;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element[&amp;#39;e&amp;#39;+ev+fn] =&amp;nbsp;&amp;nbsp;function(_ev){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_ev == _ev || window.event;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;args.unshift(_ev);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn.apply(scope,args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (element.addEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.addEventListener(ev, element[&amp;#39;e&amp;#39;+ev+fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (element.attachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.attachEvent(&amp;#34;on&amp;#34; +ev, element[&amp;#39;e&amp;#39;+ev+fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;removeEvent:function(_event,_element,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (_element.removeEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.removeEventListener(_event, _element[&amp;#39;e&amp;#39;+_event+_fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (_element.detachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element[&amp;#39;e&amp;#39;+_event+_fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;try {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;del&amp;#101;te _element[&amp;#39;e&amp;#39;+_event+_fn];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}catch(_ex){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element[&amp;#39;e&amp;#39;+_event+_fn] = null;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;onSay:function(){}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;var a = new foo(&amp;#39;llinzzi&amp;#39;);&lt;br/&gt;a.onSay = function(_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(&amp;#39;事件:&amp;#39;+this.name +&amp;#39;刚说了&amp;#39;+ _word);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/html.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot;&gt; HTML代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;TEXTAREA rows=&quot;8&quot; id=&quot;temp6541&quot;&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;自定义事件&lt;/title&gt;
	&lt;meta http-equiv=&amp;#34;Content-Type&amp;#34; content=&amp;#34;text/html; charset=utf-8&amp;#34; &gt;
	&lt;meta name=&amp;#34;keywords&amp;#34; content=&amp;#34;&amp;#34; &gt;
	&lt;meta name=&amp;#34;description&amp;#34; content=&amp;#34;&amp;#34; &gt;
&lt;/head&gt;
&lt;body&gt;



	&lt;script type=&amp;#34;text/javascript&amp;#34;&gt;
		&lt;!--

	var foo = function(){ this.init.apply(this,arguments);};

	foo.prototype = {
		init:function(_name){
			this.name = _name;
			this.addEvent('click',document,this.say,this,'hello world!');
		},
		say:function(_ev,_word){
			alert(this.name +':' +_word);
			this.stop();
			this.onSay(_word);
		},
		stop:function(){
			this.removeEvent('click',document,this.say);
		},
		addEvent:function(_event,_element,_fn,_scope,_args){
			var args = Array.prototype.slice.call(arguments, 0);  
			ev = args.shift(),
			element = args.shift(),
			fn = args.shift(),
			scope = args.length&gt;0?args.shift():window;
			element['e'+ev+fn] =  function(_ev){
				_ev == _ev || window.event;
				args.unshift(_ev);
				fn.apply(scope,args);
			};
			if (element.addEventListener) {
				element.addEventListener(ev, element['e'+ev+fn], false);
			} else if (element.attachEvent) {
				element.attachEvent(&amp;#34;on&amp;#34; +ev, element['e'+ev+fn]);
			}
		},
		removeEvent:function(_event,_element,_fn){
			if (_element.removeEventListener) {
				_element.removeEventListener(_event, _element['e'+_event+_fn], false);
			} else if (_element.detachEvent) {
				_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element['e'+_event+_fn]);
			}
			try {
				del&amp;#101;te _element['e'+_event+_fn];
			}catch(_ex){
				_element['e'+_event+_fn] = null;
			}
		},
		onSay:function(){}

	}


var a = new foo('llinzzi');
a.onSay = function(_word){
	alert('事件:'+this.name +'刚说了'+ _word);
}

		// --&gt;
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;/TEXTAREA&gt;&lt;br/&gt;&lt;INPUT onclick=&quot;runEx('temp6541')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;运行此代码&quot;/&gt; &lt;INPUT onclick=&quot;doCopy('temp6541')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;复制此代码&quot;/&gt; &lt;INPUT onclick=&quot;saveCode('temp6541')&quot; type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;保存此代码&quot;&gt;&lt;br/&gt; [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;增加了个onSay的事件，在类定义的时候只定义成空函数，然后在需要的时候调用，定义具体的方法是在类实例化后，给实例中的onSay&lt;br/&gt;&lt;br/&gt;缺点是只能定义一次的onSay的回调，如果多次定义后面的会把前面的覆盖掉，修改一下。&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var foo = function(){ this.init.apply(this,arguments);};&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foo.prototype = {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;init:function(_name){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.name = _name;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.addEvent(&amp;#39;click&amp;#39;,document,this.say,this,&amp;#39;hello world!&amp;#39;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;say:function(_ev,_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(this.name +&amp;#39;:&amp;#39; +_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.stop();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this._onSay(_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;stop:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.removeEvent(&amp;#39;click&amp;#39;,document,this.say);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addEvent:function(_event,_element,_fn,_scope,_args){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = Array.prototype.slice.call(arguments, 0);&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;scope = args.length&amp;gt;0?args.shift():window;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element[&amp;#39;e&amp;#39;+ev+fn] =&amp;nbsp;&amp;nbsp;function(_ev){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_ev == _ev || window.event;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;args.unshift(_ev);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn.apply(scope,args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (element.addEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.addEventListener(ev, element[&amp;#39;e&amp;#39;+ev+fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (element.attachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.attachEvent(&amp;#34;on&amp;#34; +ev, element[&amp;#39;e&amp;#39;+ev+fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;removeEvent:function(_event,_element,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (_element.removeEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.removeEventListener(_event, _element[&amp;#39;e&amp;#39;+_event+_fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (_element.detachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element[&amp;#39;e&amp;#39;+_event+_fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;try {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;del&amp;#101;te _element[&amp;#39;e&amp;#39;+_event+_fn];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}catch(_ex){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element[&amp;#39;e&amp;#39;+_event+_fn] = null;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_onSay:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this._onSayArray) return;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for(var i=0; i&amp;lt;this._onSayArray.length; i++){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this._onSayArray[i].apply(this,arguments);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addOnSay:function(_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this._onSayArray) this._onSayArray = new Array();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this._onSayArray.push(_fn);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;var a = new foo(&amp;#39;llinzzi&amp;#39;);&lt;br/&gt;a.addOnSay(function(_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(&amp;#39;事件1:&amp;#39;+this.name +&amp;#39;刚说了&amp;#39;+ _word);&lt;br/&gt;});&lt;br/&gt;a.addOnSay(function(_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(&amp;#39;事件2:&amp;#39;+this.name +&amp;#39;刚说了&amp;#39;+ _word);&lt;br/&gt;});&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/html.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot;&gt; HTML代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;TEXTAREA rows=&quot;8&quot; id=&quot;temp98255&quot;&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;自定义事件&lt;/title&gt;
	&lt;meta http-equiv=&amp;#34;Content-Type&amp;#34; content=&amp;#34;text/html; charset=utf-8&amp;#34; &gt;
	&lt;meta name=&amp;#34;keywords&amp;#34; content=&amp;#34;&amp;#34; &gt;
	&lt;meta name=&amp;#34;description&amp;#34; content=&amp;#34;&amp;#34; &gt;
&lt;/head&gt;
&lt;body&gt;



	&lt;script type=&amp;#34;text/javascript&amp;#34;&gt;
		&lt;!--

	var foo = function(){ this.init.apply(this,arguments);};

	foo.prototype = {
		init:function(_name){
			this.name = _name;
			this.addEvent('click',document,this.say,this,'hello world!');
		},
		say:function(_ev,_word){
			alert(this.name +':' +_word);
			this.stop();
			this._onSay(_word);
		},
		stop:function(){
			this.removeEvent('click',document,this.say);
		},
		addEvent:function(_event,_element,_fn,_scope,_args){
			var args = Array.prototype.slice.call(arguments, 0);  
			ev = args.shift(),
			element = args.shift(),
			fn = args.shift(),
			scope = args.length&gt;0?args.shift():window;
			element['e'+ev+fn] =  function(_ev){
				_ev == _ev || window.event;
				args.unshift(_ev);
				fn.apply(scope,args);
			};
			if (element.addEventListener) {
				element.addEventListener(ev, element['e'+ev+fn], false);
			} else if (element.attachEvent) {
				element.attachEvent(&amp;#34;on&amp;#34; +ev, element['e'+ev+fn]);
			}
		},
		removeEvent:function(_event,_element,_fn){
			if (_element.removeEventListener) {
				_element.removeEventListener(_event, _element['e'+_event+_fn], false);
			} else if (_element.detachEvent) {
				_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element['e'+_event+_fn]);
			}
			try {
				del&amp;#101;te _element['e'+_event+_fn];
			}catch(_ex){
				_element['e'+_event+_fn] = null;
			}
		},
		_onSay:function(){
			if(!this._onSayArray) return;	
			for(var i=0; i&lt;this._onSayArray.length; i++){
				this._onSayArray[i].apply(this,arguments);
			}
		},
		addOnSay:function(_fn){
			if(!this._onSayArray) this._onSayArray = new Array();
			this._onSayArray.push(_fn);
		}
	}


var a = new foo('llinzzi');
a.addOnSay(function(_word){
	alert('事件1:'+this.name +'刚说了'+ _word);
});
a.addOnSay(function(_word){
	alert('事件2:'+this.name +'刚说了'+ _word);
});

		// --&gt;
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;/TEXTAREA&gt;&lt;br/&gt;&lt;INPUT onclick=&quot;runEx('temp98255')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;运行此代码&quot;/&gt; &lt;INPUT onclick=&quot;doCopy('temp98255')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;复制此代码&quot;/&gt; &lt;INPUT onclick=&quot;saveCode('temp98255')&quot; type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;保存此代码&quot;&gt;&lt;br/&gt; [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;实例通过addOnSay方法来增加事件响应，可以增加多个。&lt;br/&gt;&lt;br/&gt;缺点，代码繁琐，如果要增加addOnSayAfter addOnSayBefore 就要增加很多代码。&lt;br/&gt;&lt;br/&gt;再修改一下&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var foo = function(){ this.init.apply(this,arguments);};&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foo.prototype = {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;init:function(_name){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.name = _name;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.addEvent(&amp;#39;click&amp;#39;,document,this.say,this,&amp;#39;hello world!&amp;#39;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;say:function(_ev,_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.fireEvent(&amp;#39;saybefore&amp;#39;,_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(this.name +&amp;#39;:&amp;#39; +_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.stop();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.fireEvent(&amp;#39;sayafter&amp;#39;,_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;stop:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.removeEvent(&amp;#39;click&amp;#39;,document,this.say);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addEvent:function(_event,_element,_fn,_scope,_args){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = Array.prototype.slice.call(arguments, 0);&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;scope = args.length&amp;gt;0?args.shift():window;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element[&amp;#39;e&amp;#39;+ev+fn] =&amp;nbsp;&amp;nbsp;function(_ev){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_ev == _ev || window.event;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;args.unshift(_ev);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn.apply(scope,args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (element.addEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.addEventListener(ev, element[&amp;#39;e&amp;#39;+ev+fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (element.attachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.attachEvent(&amp;#34;on&amp;#34; +ev, element[&amp;#39;e&amp;#39;+ev+fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;removeEvent:function(_event,_element,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (_element.removeEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.removeEventListener(_event, _element[&amp;#39;e&amp;#39;+_event+_fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (_element.detachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element[&amp;#39;e&amp;#39;+_event+_fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;try {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;del&amp;#101;te _element[&amp;#39;e&amp;#39;+_event+_fn];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}catch(_ex){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element[&amp;#39;e&amp;#39;+_event+_fn] = null;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fireEvent:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = Array.prototype.slice.call(arguments, 0);&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var _event = args.shift();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this.cusEvents) return;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this.cusEvents[_event]) return;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for(var i=0; i&amp;lt;this.cusEvents[_event].length; i++){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.cusEvents[_event][i].apply(this,args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;catchEvent:function(_event,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this.cusEvents) this.cusEvents = {}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this.cusEvents[_event]) this.cusEvents[_event] = new Array();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.cusEvents[_event].push(_fn);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;var a = new foo(&amp;#39;llinzzi&amp;#39;);&lt;br/&gt;&lt;br/&gt;a.catchEvent(&amp;#39;saybefore&amp;#39;,function(_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(&amp;#39;事件1:&amp;#39;+this.name +&amp;#39;想说&amp;#39;+ _word);&lt;br/&gt;});&lt;br/&gt;&lt;br/&gt;a.catchEvent(&amp;#39;sayafter&amp;#39;,function(_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(&amp;#39;事件2:&amp;#39;+this.name +&amp;#39;刚说了&amp;#39;+ _word);&lt;br/&gt;});&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/html.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot;&gt; HTML代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;TEXTAREA rows=&quot;8&quot; id=&quot;temp76228&quot;&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;自定义事件&lt;/title&gt;
	&lt;meta http-equiv=&amp;#34;Content-Type&amp;#34; content=&amp;#34;text/html; charset=utf-8&amp;#34; &gt;
	&lt;meta name=&amp;#34;keywords&amp;#34; content=&amp;#34;&amp;#34; &gt;
	&lt;meta name=&amp;#34;description&amp;#34; content=&amp;#34;&amp;#34; &gt;
&lt;/head&gt;
&lt;body&gt;



	&lt;script type=&amp;#34;text/javascript&amp;#34;&gt;
		&lt;!--

	var foo = function(){ this.init.apply(this,arguments);};

	foo.prototype = {
		init:function(_name){
			this.name = _name;
			this.addEvent('click',document,this.say,this,'hello world!');
		},
		say:function(_ev,_word){
			this.fireEvent('saybefore',_word);
			alert(this.name +':' +_word);
			this.stop();
			this.fireEvent('sayafter',_word);
		},
		stop:function(){
			this.removeEvent('click',document,this.say);
		},
		addEvent:function(_event,_element,_fn,_scope,_args){
			var args = Array.prototype.slice.call(arguments, 0);  
			ev = args.shift(),
			element = args.shift(),
			fn = args.shift(),
			scope = args.length&gt;0?args.shift():window;
			element['e'+ev+fn] =  function(_ev){
				_ev == _ev || window.event;
				args.unshift(_ev);
				fn.apply(scope,args);
			};
			if (element.addEventListener) {
				element.addEventListener(ev, element['e'+ev+fn], false);
			} else if (element.attachEvent) {
				element.attachEvent(&amp;#34;on&amp;#34; +ev, element['e'+ev+fn]);
			}
		},
		removeEvent:function(_event,_element,_fn){
			if (_element.removeEventListener) {
				_element.removeEventListener(_event, _element['e'+_event+_fn], false);
			} else if (_element.detachEvent) {
				_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element['e'+_event+_fn]);
			}
			try {
				del&amp;#101;te _element['e'+_event+_fn];
			}catch(_ex){
				_element['e'+_event+_fn] = null;
			}
		},
		fireEvent:function(){
			var args = Array.prototype.slice.call(arguments, 0);  
			var _event = args.shift();
			if(!this.cusEvents) return;
			if(!this.cusEvents[_event]) return;
			for(var i=0; i&lt;this.cusEvents[_event].length; i++){
				this.cusEvents[_event][i].apply(this,args);
			}
		},
		catchEvent:function(_event,_fn){
			if(!this.cusEvents) this.cusEvents = {}
			if(!this.cusEvents[_event]) this.cusEvents[_event] = new Array();
			this.cusEvents[_event].push(_fn);
		}
	}


var a = new foo('llinzzi');

a.catchEvent('saybefore',function(_word){
	alert('事件1:'+this.name +'想说'+ _word);
});

a.catchEvent('sayafter',function(_word){
	alert('事件2:'+this.name +'刚说了'+ _word);
});

		// --&gt;
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;

&lt;/TEXTAREA&gt;&lt;br/&gt;&lt;INPUT onclick=&quot;runEx('temp76228')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;运行此代码&quot;/&gt; &lt;INPUT onclick=&quot;doCopy('temp76228')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;复制此代码&quot;/&gt; &lt;INPUT onclick=&quot;saveCode('temp76228')&quot; type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;保存此代码&quot;&gt;&lt;br/&gt; [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;最后如果将catchEvent fireEvent addEvent removeEvent 单独放在一个类.EventHeloper&lt;br/&gt;将addEvent和catchEvent整合&lt;br/&gt;EventHeloper.addEvent(element/object,dom event/custom event,callback) 这样还是很方便的。&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;EventHelper = {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Events:{Dom:{},Custom:{}},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addEvent:function(_object,_event,_fn,_scope,_args){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = Array.prototype.slice.call(arguments, 0),&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;obj = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;scope = args.length&amp;gt;0?args.shift():window;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var eType = obj.nodeType?&amp;#39;Dom&amp;#39;:&amp;#39;Custom&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var fun;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(eType==&amp;#39;Dom&amp;#39;){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sfn = function(_ev){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_ev == _ev || window.event;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;args.unshift(_ev);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn.apply(scope,args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (obj.addEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;obj.addEventListener(ev,sfn, false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (obj.attachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;obj.attachEvent(&amp;#34;on&amp;#34; +ev,sfn);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}else {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sfn = function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var __sargs = Array.prototype.slice.call(arguments, 0);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var _sargs = __sargs.concat(args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn.apply(scope,_sargs);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fun = { fn:fn,sfn:sfn };&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.Events[eType][obj] = this.Events[eType][obj] || {};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.Events[eType][obj][ev] = this.Events[eType][obj][ev] || new Array();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.Events[eType][obj][ev].push(fun);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;removeEvent:function(_object,_event,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var obj = _object,&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = _event,&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn = _fn;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var eType = obj.nodeType?&amp;#39;Dom&amp;#39;:&amp;#39;Custom&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!this.Events[eType][obj]) return;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var fun;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for( var i=0; i&amp;lt;this.Events[eType][obj][ev].length;i++){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(fn == this.Events[eType][obj][ev][i].fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fun = this.Events[eType][obj][ev][i].sfn;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.Events[eType][obj][ev].splice(i,1);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;break;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(eType==&amp;#39;Dom&amp;#39;){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (obj.removeEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;obj.removeEventListener(ev, fun, false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (obj.detachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;obj.detachEvent(&amp;#34;on&amp;#34; + ev, fun);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fireEvent:function(_object,_event){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = Array.prototype.slice.call(arguments, 0),&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;obj = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = args.shift();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var eType = &amp;#39;Custom&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if((!this.Events[eType][obj]) || (!this.Events[eType][obj][ev])) return;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for(var i=0; i&amp;lt;this.Events[eType][obj][ev].length; i++){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.Events[eType][obj][ev][i].sfn.apply(window,args);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;修改一下演示的例子&lt;br/&gt;&lt;div class=&quot;UBBPanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/html.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot;&gt; HTML代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;TEXTAREA rows=&quot;8&quot; id=&quot;temp15749&quot;&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;自定义事件&lt;/title&gt;
	&lt;meta http-equiv=&amp;#34;Content-Type&amp;#34; content=&amp;#34;text/html; charset=utf-8&amp;#34; &gt;
	&lt;meta name=&amp;#34;keywords&amp;#34; content=&amp;#34;&amp;#34; &gt;
	&lt;meta name=&amp;#34;description&amp;#34; content=&amp;#34;&amp;#34; &gt;
&lt;/head&gt;
&lt;body&gt;



	&lt;script type=&amp;#34;text/javascript&amp;#34;&gt;
		&lt;!--

	EventHelper = {
		Events:{Dom:{},Custom:{}},
		addEvent:function(_object,_event,_fn,_scope,_args){
			var args = Array.prototype.slice.call(arguments, 0),  
				obj = args.shift(),
				ev = args.shift(),
				fn = args.shift(),
				scope = args.length&gt;0?args.shift():window;
			var eType = obj.nodeType?'Dom':'Custom';
			var fun;
			if(eType=='Dom'){
				sfn = function(_ev){
					_ev == _ev || window.event;
					args.unshift(_ev);
					fn.apply(scope,args);
				}
				if (obj.addEventListener) {
					obj.addEventListener(ev,sfn, false);
				} else if (obj.attachEvent) {
					obj.attachEvent(&amp;#34;on&amp;#34; +ev,sfn);
				}
			}else {
				sfn = function(){
					var __sargs = Array.prototype.slice.call(arguments, 0);
					var _sargs = __sargs.concat(args);
					fn.apply(scope,_sargs);
				}	
			}
			fun = { fn:fn,sfn:sfn };
			this.Events[eType][obj] = this.Events[eType][obj] || {};
			this.Events[eType][obj][ev] = this.Events[eType][obj][ev] || new Array();
			this.Events[eType][obj][ev].push(fun);
		},
		removeEvent:function(_object,_event,_fn){
			var obj = _object,
				ev = _event,
				fn = _fn;
			var eType = obj.nodeType?'Dom':'Custom';
			if(!this.Events[eType][obj]) return;

			var fun;
			for( var i=0; i&lt;this.Events[eType][obj][ev].length;i++){
				if(fn == this.Events[eType][obj][ev][i].fn){
					fun = this.Events[eType][obj][ev][i].sfn;
					this.Events[eType][obj][ev].splice(i,1);
					break;
				}
			}
			if(eType=='Dom'){
				if (obj.removeEventListener) {
					obj.removeEventListener(ev, fun, false);
				} else if (obj.detachEvent) {
					obj.detachEvent(&amp;#34;on&amp;#34; + ev, fun);
				}
			}

		},
		fireEvent:function(_object,_event){
			var args = Array.prototype.slice.call(arguments, 0),  
				obj = args.shift(),
				ev = args.shift();
			var eType = 'Custom';
			if((!this.Events[eType][obj]) || (!this.Events[eType][obj][ev])) return;
			for(var i=0; i&lt;this.Events[eType][obj][ev].length; i++){
				this.Events[eType][obj][ev][i].sfn.apply(window,args);
			}
		}
	}



	var foo = function(){ this.init.apply(this,arguments);};

	foo.prototype = {
		init:function(_name){
			this.name = _name;
			EventHelper.addEvent(document,'click',this.say,this,'hello world!');
		},
		say:function(_ev,_word){
			EventHelper.fireEvent(this,'saybefore',_word);
			alert(this.name +':' +_word);
			this.stop();
			EventHelper.fireEvent(this,'sayafter',_word);
		},
		stop:function(){
			EventHelper.removeEvent(document,'click',this.say);
		}
	}


	var a = new foo('llinzzi');

	function sayBefore(_word,_word2){
		alert('事件1:'+this.name +'想说'+ _word+_word2);
	}
	function sayAfter(_word){
		alert('事件2:'+this.name +'刚说了'+ _word);
	}

	EventHelper.addEvent(a,'saybefore',sayBefore,a,'外部的数据');
	//EventHelper.removeEvent(a,'saybefore',sayBefore);
	EventHelper.addEvent(a,'sayafter',sayBefore,a);

	

		// --&gt;
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;


&lt;/TEXTAREA&gt;&lt;br/&gt;&lt;INPUT onclick=&quot;runEx('temp15749')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;运行此代码&quot;/&gt; &lt;INPUT onclick=&quot;doCopy('temp15749')&quot;  type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;复制此代码&quot;/&gt; &lt;INPUT onclick=&quot;saveCode('temp15749')&quot; type=&quot;button&quot; class=&quot;userbutton&quot; value=&quot;保存此代码&quot;&gt;&lt;br/&gt; [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;上面例子的 EventHelper.addEvent方法可以增加自定义事件或者原生的事件&lt;br/&gt;EventHelper.addEvent(document,&amp;#39;click&amp;#39;,function(){alert(&amp;#39;hello&amp;#39;);}); // 原生事件&lt;br/&gt;EventHelper.addEvent(foo,&amp;#39;say&amp;#39;,function(){alert(&amp;#39;hello&amp;#39;);}); // 自定义时间&lt;br/&gt;&lt;br/&gt;对应的EventHelper.removeEvent也可以移除自定义事件。&lt;br/&gt;&lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117779/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117779/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Fri, 28 Nov 2008 10:27:43 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=126</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=126</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117779/4110530</fs:itemid></item><item><title>IE下的强大调试工具DebugBar</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=125</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=125</id><description>一直以为Core Services的DebugBar是收费的，今天才发现针对个人用户是免费的。&lt;br/&gt;&lt;br/&gt;著名的IETester也是Core Services公司的产品。&lt;br/&gt;&lt;br/&gt;还有能让ie支持console.log()的CompanionJS。&lt;br/&gt;&lt;br/&gt;DebugBar可以号称IE下的FireBug了。&lt;br/&gt;&lt;br/&gt;见截图。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0811/k200811269624.gif&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0811/f200811269721.gif&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0811/e200811269741.gif&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;下载地址&lt;br/&gt;&lt;a href=&quot;http://www.debugbar.com/download.php&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://www.debugbar.com/download.php&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;个人用户的注册方法&lt;br/&gt;&lt;a href=&quot;http://www.debugbar.com/register/index.php&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://www.debugbar.com/register/index.php&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;==================================================================&lt;br/&gt;还有一个更强力的 IE WebDeveloper ， 但是要收费&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://www.ieinspector.com/dominspector/images/webpage_inspector_l.gif&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://www.ieinspector.com/dominspector/images/sourceexplorer_l.gif&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;下载&lt;br/&gt;&lt;a href=&quot;http://www.ieinspector.com/dominspector/download.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://www.ieinspector.com/dominspector/download.html&lt;/a&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117790/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117790/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Wed, 26 Nov 2008 09:03:37 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=125</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=125</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117790/4110530</fs:itemid></item><item><title>JavaScript面向对象编程[二] 事件处理</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=124</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=124</id><description>继 &amp;lt; JavaScript面向对象编程[一] 构造函数 &amp;gt;(&lt;a href=&quot;http://onewww.net/blog/article.asp?id=106&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://onewww.net/blog/article.asp?id=106&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;如果采用上篇文章的方法构建的类，如果要处理事件按通常的写法会造成回调函数作用域丢失。&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var foo = function(){ this.init.apply(this,arguments);};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foo.prototype = {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;init:function(_name){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.name = _name;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.addEvent(&amp;#39;click&amp;#39;,document,this.say);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;say:function(_ev){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(this.name);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.stop();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;stop:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.removeEvent(&amp;#39;click&amp;#39;,document,this.say);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addEvent:function(_event,_element,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (_element.addEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.addEventListener(_event, _fn, false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (_element.attachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.attachEvent(&amp;#34;on&amp;#34; +_event,_fn);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;removeEvent:function(_event,_element,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (_element.removeEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.removeEventListener(_event, _fn, false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (_element.detachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.detachEvent(&amp;#34;on&amp;#34; +_event, _fn);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var a = new foo(&amp;#39;llinzzi&amp;#39;);&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;以上代码可以观察到this.say的alert方法已经调用，但内部的this.name已经不存在了，因为找不到this了。并且如果要像say里面传值似乎也比较麻烦。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;解决this丢失和传值问题的代码，并解决传this后不能注销事件的问题。&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var foo = function(){ this.init.apply(this,arguments);};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;foo.prototype = {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;init:function(_name){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.name = _name;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.addEvent(&amp;#39;click&amp;#39;,document,this.say,this,&amp;#39;hello world!&amp;#39;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;say:function(_ev,_word){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(this.name +&amp;#39;:&amp;#39; +_word);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.stop();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;stop:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.removeEvent(&amp;#39;click&amp;#39;,document,this.say);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;addEvent:function(_event,_element,_fn,_scope,_args){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var args = this._toArray(arguments),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ev = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn = args.shift(),&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;scope = args.length&amp;gt;0?args.shift():window;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element[&amp;#39;e&amp;#39;+ev+fn] =&amp;nbsp;&amp;nbsp;function(_ev){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_ev == _ev || window.event;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;args.unshift(_ev);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;fn.apply(scope,args); &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;};&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (element.addEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.addEventListener(ev, element[&amp;#39;e&amp;#39;+ev+fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (element.attachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;element.attachEvent(&amp;#34;on&amp;#34; +ev, element[&amp;#39;e&amp;#39;+ev+fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;removeEvent:function(_event,_element,_fn){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (_element.removeEventListener) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.removeEventListener(_event, _element[&amp;#39;e&amp;#39;+_event+_fn], false);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} else if (_element.detachEvent) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element.detachEvent(&amp;#34;on&amp;#34; +_event, _element[&amp;#39;e&amp;#39;+_event+_fn]);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;} &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;try {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;del&amp;#101;te _element[&amp;#39;e&amp;#39;+_event+_fn];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}catch(_ex){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element[&amp;#39;e&amp;#39;+_event+_fn] = null;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_toArray:function(iterable){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (!iterable) return [];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (iterable.toArray) return iterable.toArray();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var length = iterable.length || 0, results = new Array(length);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;while (length--) results[length] = iterable[length];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return results;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var a = new foo(&amp;#39;llinzzi&amp;#39;);&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;下一次会分享一下在用面向对象编程过程中的一些心得，有关设计模式的一些整理。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117824/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117824/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Thu, 20 Nov 2008 17:06:32 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=124</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=124</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117824/4110530</fs:itemid></item><item><title>JavaScript获取准确的行高</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=123</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=123</id><description>需求：n多行文字的div，隐藏超过5行的部分。&lt;br/&gt;分析：我能想到的有2种思路，一种是计算5行的文字个数，重新innerHTML。第二种给div设置高度，沿着第二个思路往下走，就是设置div的高度为5×lineheigh。&lt;br/&gt;解决：任务锁定到货的lineheight的问题上。css的设置会影响到lineheight。所以首先要获得css的lineheight与fontsize，如果有padding的话，也可以算进去。&lt;br/&gt;&lt;br/&gt;相关知识点：&lt;br/&gt;1，获取css不能通过element.style的方式，这只能获得内联样式，获得不到样式表中的定义。需要采用二级DOM。&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var style = _element.currentStyle || document.defaultView.getComputedStyle(_element,null);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var value = style[_property]&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;2，ie返回的单位是pt，ff返回的是px。需要pt到px的转换&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var px = parseInt(pt)*((1/72)*screen.deviceXDPI) +&amp;#39;px&amp;#39;;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;3，ie在没有设置lineheight的情况下会返回‘normal&amp;#39;，normal的数值究竟是多少？浏览器的默认高度是多少？没找到理论依据，希望了解的朋友提供下。我计算出来的如下公式。ie和ff都如此，但ff是可以读出默认数值的。所以似乎也没有计算的必要。&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;var defaultLineheight = fontsize*(7/6);&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;把以上代码攒起来，封装一个设置隐藏多余行的类&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;(function(){&lt;br/&gt;&lt;br/&gt; var AutoOverHider = function() { this.init.apply(this,arguments);};&lt;br/&gt;&lt;br/&gt; AutoOverHider.prototype = {&lt;br/&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;init:function(_element,_maxLine){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.element = document.getElementById(_element);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(_maxLine) this.hide(_maxLine);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;hide:function(_maxLine){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.maxLine = _maxLine;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var lineHeight = this._getStyle(&amp;#39;lineHeight&amp;#39;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(lineHeight==&amp;#39;normal&amp;#39;) { lineHeight = 7/6+&amp;#39;&amp;#39;;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(lineHeight.substr(lineHeight.length-2)!=&amp;#39;px&amp;#39;)&amp;#160;&amp;#160;&amp;#160;&amp;#160;lineHeight = lineHeight * parseInt(this._getStyle(&amp;#39;fontSize&amp;#39;)) + &amp;#39;px&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var paddingHeight = this._getStyle(&amp;#39;paddingBottom&amp;#39;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;alert(paddingHeight);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.height =&amp;nbsp;&amp;nbsp;this.maxLine * parseInt(lineHeight) - parseInt(paddingHeight);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.element.style.height = this.height&amp;nbsp;&amp;nbsp;+ &amp;#39;px&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.element.style.overflow = &amp;#39;hidden&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;show:function(){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;this.element.style.height = &amp;#39;auto&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;},&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_getStyle:function(_property,_element){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_element = _element||this.element;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var style = _element.currentStyle || document.defaultView.getComputedStyle(_element,null);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var value = style[_property]&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(/*@cc_on!@*/0 ) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(value.substr(value.length-2)==&amp;#39;pt&amp;#39;)&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;value = parseInt(value)*((1/72)*screen.deviceXDPI) +&amp;#39;px&amp;#39;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return value;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt; };&lt;br/&gt; &lt;br/&gt; &lt;br/&gt;})()&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;调用&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;&amp;lt;div id=&amp;#34;t1&amp;#34;&amp;gt;&lt;br/&gt;千余字&lt;br/&gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;br/&gt; var a1 = new AutoOverHider(&amp;#39;t1&amp;#39;);&lt;br/&gt; a1.hide(5);&lt;br/&gt;或者&lt;br/&gt; var a1 = new AutoOverHider(&amp;#39;t1&amp;#39;，5);&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117855/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117855/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Wed, 19 Nov 2008 09:39:37 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=123</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=123</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117855/4110530</fs:itemid></item><item><title>macbook重装系统</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=122</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=122</id><description>朋友一台macbook系统坏了，让我拿来修一下。此前我也没玩过mac os x&lt;br/&gt;10.4的系统，也顺便想升级到10.5 印象里重新安装10.5比升级更方便些。&lt;br/&gt;下载了一个10.5的镜像6.6G，下了3天，开始还挺开心，后来反应过来一张4.7的dvd刻不下。。去找了下h9的dvd碟，没买到。&lt;br/&gt;于是回来琢磨怎么硬盘安装，可以用火线的ipod来安装，可我没有。&lt;br/&gt;还有一套方案是先给本分区，分2个驱，把镜像恢复到第二个分区，第二个分区就变成了安装盘，重启可引导。&lt;br/&gt;可用bootcamp分区，由于是10.4的系统 所以只能用1.4的bootcamp， 好不容易下载到，提示已过期，吐血 修改系统时间，搞定，安装后提示硬盘损坏，然我修复，于是修复之，修复提示无法修复。。玩我。。&lt;br/&gt;第二天和克军借了一张macbook的10.5.4的系统盘，和文丞借了个macbook pro的10.5.2的盘，兴冲冲的放进去光驱（10.5.4的）。启动，提示该mac os x 无法安装到此机器。于是马上格式化硬盘，心想是不是原系统作怪。格式化后还不行，再放10.5.2的盘，问题依旧。。 google之，结论是原装机器带的盘不能换别的老机型上。&lt;br/&gt;想了下，光盘引导系统，磁盘工具，把硬盘分2个区，插上移动硬盘里面有之前下的10.5的6.6g那个镜像，在磁盘工具里直接设置下把第二个硬盘恢复为6.6的镜像，吃饭，吃完后发现已经完事，重启，搞定。&lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117915/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117915/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=6"></category><pubDate>Tue, 21 Oct 2008 20:38:36 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=122</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=122</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117915/4110530</fs:itemid></item><item><title>1500出售闲置AppleTV</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=121</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=121</id><description>&lt;strong&gt;已售出&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;本来是想买来装上linux当服务器玩的，后来因为没有显示器（apple tv要求的显示器接口是HDMI，租的房子的电视也很差，不支持色差线），配置起来不方便，所以也没玩起来，也懒的折腾了，就卖了。&lt;br/&gt;&lt;br/&gt;现在appletvhacks.net介绍appleTV已经可以完全被破解了 可以播放任何格式的影片。&lt;br/&gt;机器成色全新，因为基本就没用过。不过拆过，因为要hack成linux 40G版&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://img2.zol.com.cn/product/10_450x337/490/ceerxEYr6K5XQ.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;相关资料&lt;br/&gt;&lt;a href=&quot;http://www.appl&amp;#101;tvhacks.net&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://www.appl&amp;#101;tvhacks.net&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://auction1.taobao.com/auction/item_detail-0db2-af6208ccf33de174802f75aed17251bc.jhtml&quot; rel=&quot;external&quot;&gt;淘宝链接&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;需要的朋友留言或加msn llinzzi@gmail.com&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117947/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117947/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=6"></category><pubDate>Wed, 15 Oct 2008 11:09:08 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=121</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=121</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117947/4110530</fs:itemid></item><item><title>Chrome的hack写法以及CSS的支持程度</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=120</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=120</id><description>Chrome的CSS支持程度 引用自 &lt;a target=&quot;_blank&quot; href=&quot;http://www.evotech.net/blog/2008/09/google-chrome-browser-css-sel&amp;#101;ctor-support/&quot; rel=&quot;external&quot;&gt;Estelle&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0809/3200894104836.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0809/o200894105012.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;Chrome的hack写法 引用自 &lt;a target=&quot;_blank&quot; href=&quot;http://www.evotech.net/blog/2008/09/css-hack-for-google-chrome-and-safari-31/&quot; rel=&quot;external&quot;&gt;Estelle&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;UBBPanel codePanel&quot;&gt;&lt;div class=&quot;UBBTitle&quot;&gt;&lt;img src=&quot;http://onewww.net/blog/images/code.gif&quot; style=&quot;margin:0px 2px -3px 0px&quot; alt=&quot;程序代码&quot;/&gt; 程序代码&lt;/div&gt;&lt;div class=&quot;UBBContent&quot;&gt;&lt;br/&gt;body:nth-of-type(1) p{&lt;br/&gt;&amp;nbsp;&amp;nbsp; color: #333333;&lt;br/&gt;}&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;Only the Google Chrome and Safari 3.1 browsers will show paragraphs as red. &lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117987/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117987/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=5"></category><pubDate>Thu, 04 Sep 2008 10:58:52 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=120</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=120</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117987/4110530</fs:itemid></item><item><title>JS框架检测器 - YUI Monitor</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=119</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=119</id><description>当打开网站的时候能检测到网站的js框架及其版本（如：YUI jquery prototype）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0809/i20089410343.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://onewww.net/blog/attachments/month_0809/0200894103552.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;安裝 &lt;a target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/zh-TW/firefox/addon/748&quot; rel=&quot;external&quot;&gt;Greasemonkey&lt;/a&gt;&lt;br/&gt;安裝 &lt;a target=&quot;_blank&quot; href=&quot;http://josephj.com/article/yui-monitor/yuimonitor.user.js&quot; rel=&quot;external&quot;&gt;YUI Monitor&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117991/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117991/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Thu, 04 Sep 2008 10:37:32 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=119</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=119</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117991/4110530</fs:itemid></item><item><title>firefox插件 记录优酷的播放记录</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=118</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=118</id><description>经常上优酷看电视剧，卡通等。第二天继续看的时候又不记得上次看到哪了，当然你可以去浏览器的历史记录里找，不过很麻烦。写了个greasemonkey的小扩展，&lt;a target=&quot;_blank&quot; href=&quot;https://addons.mozilla.org/zh-CN/firefox/addon/748&quot; rel=&quot;external&quot;&gt;下载greasemonkey&lt;/a&gt;，可以记录前几次的播放地址，当播放可以自动切换的专辑列表的时候也可以正常记录。&lt;br/&gt;&lt;br/&gt;youku-playlist &lt;a target=&quot;_blank&quot; href=&quot;http://cn.yimg.com/i/temp/youku-playlist.user.js&quot; rel=&quot;external&quot;&gt;安装&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;安装到greasemonkey后，再看过视频后，下次打开首页，会在首页底部看到列表。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246117999/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246117999/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Fri, 18 Jul 2008 17:12:18 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=118</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=118</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246117999/4110530</fs:itemid></item><item><title>基于YUI的城市联动组件</title><link atom:type="text/html">http://onewww.net/blog/article.asp?id=117</link><author xmlns="http://www.w3.org/2005/Atom"><name>llinzzi</name><uri>http://onewww.net/blog/</uri><email>LlinZzi(at)gmail(dot)com</email></author><id xmlns="http://www.w3.org/2005/Atom">http://onewww.net/blog/default.asp?id=117</id><description>参加过D2的朋友会对YUI印象比较深刻吧 ；）&lt;br/&gt;//城市级联&lt;br/&gt;//特点 支持3级连动 2级联动 &lt;br/&gt;//后期加载数据采用js方式可跨域,也会本地缓存&lt;br/&gt;//&lt;span style=&quot;color:Red&quot;&gt;可以前期绑定城市状态，方便在修改页面进行使用&lt;/span&gt;&lt;br/&gt;//回调事件&lt;br/&gt;&lt;br/&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://onewww.net/lab/yui/citySel&amp;#101;cter/demo.html&quot; rel=&quot;external&quot;&gt;demo&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;手里没有区的信息，那个朋友有提供下&lt;br/&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/onewww/246118003/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/onewww/246118003/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://onewww.net/blog/default.asp?cateID=4"></category><pubDate>Tue, 20 May 2008 09:29:40 +0800</pubDate><guid isPermaLink="false">http://onewww.net/blog/default.asp?id=117</guid><dc:creator>llinzzi</dc:creator><fs:srclink>http://onewww.net/blog/article.asp?id=117</fs:srclink><fs:srcfeed>http://onewww.net/blog/atom.asp</fs:srcfeed><fs:itemid>feedsky/onewww/~6003267/246118003/4110530</fs:itemid></item></channel></rss>
