<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/vnd.wap.wml; charset=utf-8"/>
<meta http-equiv="Cache-Control" content="no-cache"/></head>
<card title="Javascript 悬停弹出框 - Gracecode.com">
<p>由于项目的需要，要做一个鼠标悬停显示信息的效果。坦白说，我这个部件我不想使用框架实现，原因是太臃肿了。</p>

<p>在代码库里面找到了些类似的代码（本人为业余的 Javascript 开发人员），但发现都非常的散乱，于是我就尝试重写它们。</p>

<p><img src="http://pic.yupoo.com/posuring/95824556d667/medium.jpg" alt="http://pic.yupoo.com/posuring/95824556d667/medium.jpg" title="http://pic.yupoo.com/posuring/95824556d667/medium.jpg" /></p>

<p><a href="http://www.gracecode.com/demo/BubbleTooltips/" title="http://www.gracecode.com/demo/BubbleTooltips/">先看下 DEMO</a>，打包以后的文件可以在<a href="http://www.gracecode.com/upload/2008_04_02/1207133095.zip" title="http://www.gracecode.com/upload/2008_04_02/1207133095.zip">这里</a>下载。</p>

<p>用法很简单，就是在函数参数中选择容器的 id（或者是节点集合），然后代码就会将容器中 a 元素的 title 和链接以泡框的形式弹出。</p>

<p>下面，说下碰到的些值得回味的代码（格式是我重写以后的）。</p>

<pre>_addCssFile : function (css_file) {
    var l = document.createElement(&quot;link&quot;);
    l.setAttribute(&quot;type&quot;,  &quot;text/css&quot;);
    l.setAttribute(&quot;rel&quot;,   &quot;stylesheet&quot;);
    l.setAttribute(&quot;href&quot;,  css_file);
    l.setAttribute(&quot;media&quot;, &quot;screen&quot;);
    document.getElementsByTagName(&quot;head&quot;)[0].appendChild(l);
},</pre><p>用 Javascript 载入外部样式文件，建议在 DOM Ready 以后运行。</p>

<pre>_setOpacity: function (oNode) {
    oNode.style.filter       = &quot;alpha(opacity:85)&quot;;
    oNode.style.KHTMLOpacity = &quot;0.85&quot;;
    oNode.style.MozOpacity   = &quot;0.85&quot;;
    oNode.style.opacity      = &quot;0.85&quot;;
},</pre><p>强行设置元素的属性，不像 YUI 这样<a href="http://www.gracecode.com/Archive/Display/1013" title="http://www.gracecode.com/Archive/Display/1013">小心翼翼的先判断后操作</a>，再设置。我等草根的写出来代码，虽然“暴力”，但是实用。</p>

<p>类似的，还有</p>

<pre>var posx = 0, posy = 0;
if(e == null) {
    e = window.event;
}

if(e.pageX || e.pageY) {
    posx=e.pageX; posy=e.pageY;
} else if(e.clientX || e.clientY) {
    if(document.documentElement.scrollTop){
        posx = e.clientX + document.documentElement.scrollLeft;
        posy = e.clientY + document.documentElement.scrollTop;
    } else {
        posx = e.clientX + document.body.scrollLeft;
        posy = e.clientY + document.body.scrollTop;
    }
}</pre><p>获取当前元素的坐标 -- 写过类似功能的朋友，应该对此段代码很熟悉。</p>


<p>
<a href="http://www.gracecode.com/wap/">Gracecode.com</a> |
<a href="http://www.gracecode.com/wap/d/1292 ">Permalink</a>(<a href="http://www.gracecode.com/Archive/Display/1292 ">xHTML</a>) |
<a href="http://www.gracecode.com/Trackback/Recieve/1292/msio2r">Trackback</a> |
<a href="http://rss.gracecode.com">Rss</a>
</p>
</card>
</wml>