好久没有写blog了,今天更新下最近在做的事情,顺便让朋友们了解下,我还顽强地活着[JavaScript]自定义Title的显示方式(zt)...


最近刚做完公司的WEB MVP 开发框架.累得脑子快要抽筋了,可是即使要抽筋了,也得继续上啊...谁叫俺是打工仔呢.

现在研究的重点转移到了客户端,于是开始钻研起dojo,prototype,yui......

发现javascript也在OO呢(虽然只是同vb一样基于对象的)~~~呵呵

以前只会找要的js代码,然后改啊改啊...从来没有认真的学习过,这次决定好好学学这个Web开发必不可少的东东...

好了废话不扯了,这次的任务就是做Title的自定义显示.

我想IE的Tip显示方式,肯定大家都不满意吧.每一天有多少人在做着自己的自定义显示.

俺可没有那么多精力,先是从网络上找找到了一个老外的程序 qTip:http://solardreamstudios.com/_img/learn/css/qtip/qTip.html

仔细看了看代码,发现几个问题:
1.这个老外只做了一半,它只对单个Tag的所有元素集合进行自定义显示
1[JavaScript]自定义Title的显示方式(zt)var qTipTag = "a"//Which tag do you want to qTip-ize? Keep it lowercase!//

2.循环出来每个挂载mouse事件
1[JavaScript]自定义Title的显示方式(zt)var anchors = document.getElementsByTagName (qTipTag);
2[JavaScript]自定义Title的显示方式(zt)
3}


3.Event采用赋值形式
1

OK.针对这些问题,我们开始我们的重构之旅

1.首先,我希望页面控件的所有Tag只要有Title的,我都要采用自定义显示,这时想到一个最土的招就是
[JavaScript]自定义Title的显示方式(zt)var anchors = document.all;

2.它的实现方式是循环找到所有的有标记的Tag,然后设置mouse事件.
  这一步我觉得有2个问题:
  a.每个tag都设置mouse的事件,显然页面变大了,特别是我现在要求所有的Tag都要自定义显示
  b.Event采用赋值.......寒一个

  我的思路是使用事件的串连机制,把mouse的事件直接挂载到document上面,然后进行冒泡处理(我不知道这样的效率实际上是更好呢,还是更坏,自我感觉应该会好些吧?:))

 
 1[JavaScript]自定义Title的显示方式(zt)document.attachEvent("onmouseover",function(e)
 2

当然这里或许会碰到的所谓的IE 内存泄漏,因为没有detachEvent.(本来想使用Event.observer的,不过prototype还不谈熟,加上脑子也晕乎乎了,留待下次重构吧)...

[JavaScript]自定义Title的显示方式(zt)document.attachEvent 

看来好像只支持IE哦....还是对少数的其他Fans支持一下吧,修改一下系统方法,让它适当兼容一下其他浏览器
 1[JavaScript]自定义Title的显示方式(zt)if(!document.attachEvent)//Not IE
 2


这样子,大概qTip的功能就重构结束了...

当然还有很多可以改进的地方,比如把提示用的层设计得漂亮一点...


重构后的源文件(在需要的页面link这2个文件就好了):

 


javascript控制TEXTBOX长度
<SCRIPT language=javascript1.3>

相关文章: