分类 网页与编程 中的文章

用心感受PHP无刷新留言簿

这个留言簿做出来有两个多月了,以前调用的XMLHTTP全是自己写的,一直测试正常,后来在多种环境和浏览器下测试才发现很不稳定,只有在册了什么DLL的IE和FireFox下才可以正常使用,JAVASCRIPT的函数我研究了好久,也参考了其它的源码好久,可是有时候写的就是一样,就是问题不断,怎么也找不到哪里错了,因为最近在学JQuery,发现JQuery的AJAX很强大,也很简单,而且兼容多浏览器,便把留言簿的AJAX函数全使用JQuery的代替了,于是也现出来给大家看看,呵呵。

演示地址:http://www.vgot.net/test/myfeel/

Pader 2008-9-25 2

鱼鱼桌面“电池状态信息”小工具

以前开发过一样的在VISTA侧边栏的电池小工具,因为身边的朋友喜欢用鱼鱼,特花了点时间做了一个鱼鱼下的小工具,还有各种各样的背景皮肤选择哦。

[attach=63] [attach=64] [attach=65]

 [attach=66]

小工具默认使用的是“微软雅黑”字体,这样更美观,如果您的电脑上没有微软雅黑字体的话会很难看,建议从网上下载微软雅黑字体,当然如果您不喜欢装字体的话可以使用默认为“黑体”版的,您可以从鱼鱼的官方网站上下载。

下载:
» 微软雅黑版鱼鱼官网下载
» 雅黑版本地下载:[attach=213]
» 黑体版本站下载:[attach=67]

Pader 2008-9-25 3

网页中随时获取鼠标位置

好久没更新博客了,连看奥运会的时候都没上过网,这次给大家带来一个 JavaScript 好东西,自己拿去玩吧...
 

JavaScript代码
  1. <!--   
  2. /*   
  3.     2008-7-28 17:54  
  4.     Made by pader of http://www.vgot.cn  
  5.     我们先在这里声明了一个全局空数组变量 mousePos  
  6.     用它来存放鼠标的即时坐标数据  
  7. */  
  8. var mousePos = new Array();   
  9. /*  
  10.     mouseLoc 把获取到的鼠标坐标数据赋值给了  
  11.     mousePos 这个全局数组.  
  12.     mousePos["x"] 的值就是鼠标的 X 轴即横向距页面左边的像素距离  
  13.     mousePos["y"] 的值就是鼠标的 Y 轴即纵向距页面顶部的像素距离  
  14. */  
  15. function mouseLoc(e){   
  16.   if(document.all){   
  17.     x = event.x + document.body.scrollLeft;   
  18.     y = event.y + document.body.scrollTop;   
  19.   } else {   
  20.     x = e.pageX;   
  21.     y = e.pageY;   
  22.   }   
  23.   mousePos["x"] = x;   
  24.   mousePos["y"] = y;   
  25.   return true;   
  26. }   
  27. /*  
  28.     为了让页面能即时获得鼠标的坐标,我们只能用之类的事件执行这样的函数.  
  29.     在这里使用 document.onmousemove 事件来执行 mouseLoc  
  30.     以不断更新全局数组 mousePos 里的鼠标位置数据  
  31. */  
  32. if(document.layers){    //NS4   
  33.     document.captureEvents(Event.MOUSEMOVE);   
  34. }   
  35. document.onmousemove = mouseLoc;   
  36. /*  
  37.     那如果我还想在这个事件里做其它的事情怎么办呢?  
  38.     可以像下面这样写:  
  39.         document.onmousemove = function(){  
  40.             document.body.onmousemove = mouseLoc;  
  41.             alert('第一个弹出信息');  
  42.             alert("弹出第二个信息");  
  43.             //更多...  
  44.         }  
  45.     这里为防止与 document.onmousemove 冲突,我们在 function(){} 里面  
  46.     使用的是 document.body.onmousemove 来执行 mouseLoc;  
  47. */  
  48. //-->  


去掉注释就这么点

 

JavaScript代码
  1. <!--   
  2. var mousePos = new Array();   
  3.   
  4. function mouseLoc(e){   
  5.   if(document.all){   
  6.     x = event.x + document.body.scrollLeft;   
  7.     y = event.y + document.body.scrollTop;   
  8.   } else {   
  9.     x = e.pageX;   
  10.     y = e.pageY;   
  11.   }   
  12.   mousePos["x"] = x;   
  13.   mousePos["y"] = y;   
  14.   return true;   
  15. }   
  16.   
  17. if(document.layers){    //NS4   
  18.     document.captureEvents(Event.MOUSEMOVE);   
  19. }   
  20. document.onmousemove = mouseLoc;   
  21. //-->  
Pader 2008-8-27 0

终于搞定了

想写几个通用的 AJAX 所用的函数,在写 postRequest() 这个函数的时候总是得不到返回值,后来才知道,用异步数据是不行的,得同步,记录下。。。

在此要感谢这篇文章 http://xujingbao.javaeye.com/blog/186050
 
下面的 writePostRequest() 函数因为不想脚本臃肿,就直接调用了 postRequest() 函数了,因为没有返回值可以用异步回调的方式,不过要另写整个函数,所以如果想看上去执行速度快一些的话就可以重写 writePostRequest() 函数用异步的方式。
另外一点就是如果 Post 数据的时候中文要编码,否则发送到服务器端会乱码,当然可以在服务器端转换编码,详情可以参考《PHP的unescape()函数》这篇文章。

JavaScript代码

var xmlHttp;   
var isie = false;   
function createXmlHttp(){   
    var theObject;   
    if(window.ActiveXObject){ //Get xmlHttp   
        theObject = new ActiveXObject("Microsoft.XMLHTTP"); //IE6及以上版本   
        isie = true;   
    }else if(window.XMLHttpRequest){   
        theObject = new XMLHttpRequest();   
    }else{   
        alert("您的浏览器不支持XMLHTTP,页面无法创建对象,将会影响到页面的正常功能!");   
    }   
    return theObject;   
}   
  
function getRequest(url){   //获取 GET 返回数据   
    xmlHttp = createXmlHttp();   
    try{   
        if(isie == false ){   
            xmlHttp.open("GET", url, false);   
            xmlHttp.setRequestHeader("If-Modified-Since","0");    
            xmlHttp.overrideMimeType("text/html;charset=gb2312");   
            xmlHttp.send(null);   
            return xmlHttp.responseText;   
        }else{   
            xmlHttp.open("GET", url, false);   
            xmlHttp.setRequestHeader("If-Modified-Since","0");    
            xmlHttp.send(null);   
            if(xmlHttp.readyState == 4){   
                if(xmlHttp.status == 200 || xmlHttp.status == 0){   
                    return Recenspace(xmlHttp.responseBody);   
                }   
            }   
        }   
    }catch(exception){       
        document.write('exception:'+exception.message);       
    }       
}   
  
function postRequest(url,postString){   //获取 POST 返回数据   
    xmlHttp = createXmlHttp();   
    var returnText = null;   
    xmlHttp.onreadystatechange = function(){   
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200){   
            returnText = xmlHttp.responseText;   
        }   
    }   
    xmlHttp.open("POST", url, false);   
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
  //xmlHttp.overrideMimeType("text/html;charset=gb2312");   
    xmlHttp.send(postString);   
    return returnText;   
}   
  
function Recenspace(Html){   
    var rs=new ActiveXObject("ADODB.RecordSet");   
    rs.fields.append("a",201,1);   
    rs.open();   
    rs.addNew();   
    rs(0).appendChunk(Html);   
    rs.update();   
    return rs(0).value;   
    rs.close();   
}   
  
function writeGetRequest(url,element){  //写入 GET 返回值   
    document.getElementById(element).innerHTML = getRequest(url);   
}   
  
function writePostRequest(url,postString,element){  //写入 POST 返回值   
    document.getElementById(element).innerHTML = postRequest(url,postString);   
}   
  
function doIt(){   
    //无操作函数    
}


Pader 2008-6-20 1

PHP的unescape()函数

昨天把自己的留言本后台回复改成AJAX无刷新的时候POST数据到服务器端中文总是乱码,郁闷的很~后来在网上查了一下才知道 JavaScript 用 XmlHTTP POST数据时中文是被当成 UTF-8 编码发送出去的,一个解决的方法是在客户端把中文用 JavaScript 的 escape() 函数编码了再到服务器端解码,可是在服务器端怎么解码呢,那就看下面一段我从网上找到的 PHP 中和 JavaScript 的 unescape() 函数功能一样的解码函数吧(这句话怎么听着有点别扭??)

PHP代码

function unescape($str){   
 $str = rawurldecode($str);    
 preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);    
 $ar = $r[0];   
 foreach($ar as $k=>$v){   
  if(substr($v,0,2) == "%u"){   
   $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));   
   }elseif(substr($v,0,3) == "&#x"){   
   $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));   
   }elseif(substr($v,0,2) == "&#"){   
   $ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));   
  }   
 }   
 return join("",$ar);   
}


Pader 2008-6-1 1