<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鄧華

    BlogJava 聯(lián)系 聚合 管理
      48 Posts :: 0 Stories :: 149 Comments :: 0 Trackbacks

    #

    這回碰到的情況是prototype.js產(chǎn)生的序列化字符串傳遞到后臺后,亂碼的問題。

    環(huán)境: prototype-1.4.0.js,gb2312編碼的jsp?,后臺:Linux?2.6.9, resin2., resin的啟動參數(shù)加了 -Dfile.encoding=ISO-8859-1


    在網(wǎng)頁提交參數(shù)的時候。 用了:

    var?myAjax?=?new?Ajax.Request(url,?{method:?'post',?parameters:?Form.serialize($('converge')),onComplete:?showResponse,onLoaded:doing,onLoading:doing});


    其中Form.serialize($('converge')),是把converge表單中所有的字段,拼成method=xxx&type=sss的形式, 在prototype的函數(shù)中,會把key和value分別用encodeURIComponent 來把一個字符串轉(zhuǎn)成utf-8的URL編碼形式.

    比如,“中文”會被編碼成:%E4%B8%AD%E6%96%87

    但該字符串傳到后臺時,會被識別成亂碼. 用request.getParameter取到的字符串也是亂碼,而不是本身的字符。

    主要原因是%號,如果該串改成%22E4%22B8%22AD%22E6%2296%2287 也是可以識別的.?

    解決方法: 在prototype文件中找到 encodeURIComponent? 這段, 在encodeURIComponent 后,再將該字符串用escape方法再編碼一次。 這時候傳到后臺,用request.getParameter,可以得到編碼后的正確的字符串。即 %E4%B8%AD%E6%96%87 .

    這時,可以用java.net.URLDecoder.decode(keyword,"UTF-8");? 對這個字符串進行解碼,從而得到正確的中文。



    posted @ 2006-11-09 09:52 鄧華的碎碎念 閱讀(472) | 評論 (0)編輯 收藏

         摘要: IE用一個節(jié)點的outerHTML來獲得的代碼,與xhtml的代碼是不兼容的, 比如,標簽名是大寫,LI標簽沒有封口等。

    找到一個替換的函數(shù),用來解決這個問題。   閱讀全文
    posted @ 2006-10-08 11:06 鄧華的碎碎念 閱讀(1083) | 評論 (2)編輯 收藏

    從網(wǎng)上收集了兩個.

      /**
      * JavaScript escape/unescape 編碼的 Java 實現(xiàn)
      * author jackyz
      * keep this copyright info while using this method by free
      */
      public class Escape {
      private final static String[] hex = {
      "00","01","02","03","04","05","06","07","08","09","0A","0B","0C","0D","0E","0F",
      "10","11","12","13","14","15","16","17","18","19","1A","1B","1C","1D","1E","1F",
      "20","21","22","23","24","25","26","27","28","29","2A","2B","2C","2D","2E","2F",
      "30","31","32","33","34","35","36","37","38","39","3A","3B","3C","3D","3E","3F",
      "40","41","42","43","44","45","46","47","48","49","4A","4B","4C","4D","4E","4F",
      "50","51","52","53","54","55","56","57","58","59","5A","5B","5C","5D","5E","5F",
      "60","61","62","63","64","65","66","67","68","69","6A","6B","6C","6D","6E","6F",
      "70","71","72","73","74","75","76","77","78","79","7A","7B","7C","7D","7E","7F",
      "80","81","82","83","84","85","86","87","88","89","8A","8B","8C","8D","8E","8F",
      "90","91","92","93","94","95","96","97","98","99","9A","9B","9C","9D","9E","9F",
      "A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","AA","AB","AC","AD","AE","AF",
      "B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","BA","BB","BC","BD","BE","BF",
      "C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","CA","CB","CC","CD","CE","CF",
      "D0","D1","D2","D3","D4","D5","D6","D7","D8","D9","DA","DB","DC","DD","DE","DF",
      "E0","E1","E2","E3","E4","E5","E6","E7","E8","E9","EA","EB","EC","ED","EE","EF",
      "F0","F1","F2","F3","F4","F5","F6","F7","F8","F9","FA","FB","FC","FD","FE","FF"
      };
      private final static byte[] val = {
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
      0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F
      };
      public static String escape(String s) {
      StringBuffer sbuf = new StringBuffer();
      int len = s.length();
      for (int i = 0; i < len; i++) {
      int ch = s.charAt(i);
      if (ch == ' ') {            // space : map to '+'
      sbuf.append('+');
      } else if ('A' <= ch && ch <= 'Z') {  // 'A'..'Z' : as it was
      sbuf.append((char)ch);
      } else if ('a' <= ch && ch <= 'z') {  // 'a'..'z' : as it was
      sbuf.append((char)ch);
      } else if ('0' <= ch && ch <= '9') {  // '0'..'9' : as it was
      sbuf.append((char)ch);
      } else if (ch == '-' || ch == '_'    // unreserved : as it was
      || ch == '.' || ch == '!'
      || ch == '~' || ch == '*'
      || ch == '\'' || ch == '('
      || ch == ')') {
      sbuf.append((char)ch);
      } else if (ch <= 0x007F) {       // other ASCII : map to %XX
      sbuf.append('%');
      sbuf.append(hex[ch]);
      } else {                // unicode : map to %uXXXX
      sbuf.append('%');
      sbuf.append('u');
      sbuf.append(hex[(ch >>> 8)]);
      sbuf.append(hex[(0x00FF & ch)]);
      }
      }
      return sbuf.toString();
      }
      public static String unescape(String s) {
      StringBuffer sbuf = new StringBuffer();
      int i = 0;
      int len = s.length();
      while (i < len) {
      int ch = s.charAt(i);
      if (ch == '+') {            // + : map to ' '
      sbuf.append(' ');
      } else if ('A' <= ch && ch <= 'Z') {  // 'A'..'Z' : as it was
      sbuf.append((char)ch);
      } else if ('a' <= ch && ch <= 'z') {  // 'a'..'z' : as it was
      sbuf.append((char)ch);
      } else if ('0' <= ch && ch <= '9') {  // '0'..'9' : as it was
      sbuf.append((char)ch);
      } else if (ch == '-' || ch == '_'    // unreserved : as it was
      || ch == '.' || ch == '!'
      || ch == '~' || ch == '*'
      || ch == '\'' || ch == '('
      || ch == ')') {
      sbuf.append((char)ch);
      } else if (ch == '%') {
      int cint = 0;
      if ('u' != s.charAt(i+1)) {     // %XX : map to ascii(XX)
      cint = (cint << 4) | val[s.charAt(i+1)];
      cint = (cint << 4) | val[s.charAt(i+2)];
      i+=2;
      } else {              // %uXXXX : map to unicode(XXXX)
      cint = (cint << 4) | val[s.charAt(i+2)];
      cint = (cint << 4) | val[s.charAt(i+3)];
      cint = (cint << 4) | val[s.charAt(i+4)];
      cint = (cint << 4) | val[s.charAt(i+5)];
      i+=5;
      }
      sbuf.append((char)cint);
      }
      i++;
      }
      return sbuf.toString();
      }
      public static void main(String[] args) {
      String stest = "中文1234 abcd[]()<+>,.~\\";
      System.out.println(stest);
      System.out.println(escape(stest));
      System.out.println(unescape(escape(stest)));
      }
      }




    ===========================================================================

    class? EscapeUnescape
    {
    ?public static String? escape (String src)
    ?{
    ??int i;
    ??char j;
    ??StringBuffer tmp = new StringBuffer();
    ??tmp.ensureCapacity(src.length()*6);

    ??for (i=0;i<src.length() ;i++ )
    ??{

    ???j = src.charAt(i);

    ???if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j))
    ????tmp.append(j);
    ???else
    ????if (j<256)
    ????{
    ????tmp.append( "%" );
    ????if (j<16)
    ?????tmp.append( "0" );
    ????tmp.append( Integer.toString(j,16) );
    ????}
    ????else
    ????{
    ????tmp.append( "%u" );
    ????tmp.append( Integer.toString(j,16) );
    ????}
    ??}
    ??return tmp.toString();
    ?}

    ?public static String? unescape (String src)
    ?{
    ??StringBuffer tmp = new StringBuffer();
    ??tmp.ensureCapacity(src.length());
    ??int? lastPos=0,pos=0;
    ??char ch;
    ??while (lastPos<src.length())
    ??{
    ???pos = src.indexOf("%",lastPos);
    ???if (pos == lastPos)
    ????{
    ????if (src.charAt(pos+1)=='u')
    ?????{
    ?????ch = (char)Integer.parseInt(src.substring(pos+2,pos+6),16);
    ?????tmp.append(ch);
    ?????lastPos = pos+6;
    ?????}
    ????else
    ?????{
    ?????ch = (char)Integer.parseInt(src.substring(pos+1,pos+3),16);
    ?????tmp.append(ch);
    ?????lastPos = pos+3;
    ?????}
    ????}
    ???else
    ????{
    ????if (pos == -1)
    ?????{
    ?????tmp.append(src.substring(lastPos));
    ?????lastPos=src.length();
    ?????}
    ????else
    ?????{
    ?????tmp.append(src.substring(lastPos,pos));
    ?????lastPos=pos;
    ?????}
    ????}
    ??}
    ??return tmp.toString();
    ?}

    ?public static void main(String[] args)
    ?{
    ??String tmp="~!@#$%^&*()_+|\\=-,./?><;'][{}\"";
    ??System.out.println("testing escape : "+tmp);
    ??tmp =escape(tmp);
    ??System.out.println(tmp);
    ??System.out.println("testing unescape :"+tmp);
    ??System.out.println(unescape(tmp));
    ?}
    }

    posted @ 2006-08-30 11:41 鄧華的碎碎念 閱讀(411) | 評論 (0)編輯 收藏


    <script language="JavaScript" type="Text/JavaScript">

    <!--

    if(window.Event){// 修正Event的DOM

    ??? /*

    ??????????????????????????????? IE5??????? MacIE5??????? Mozilla??????? Konqueror2.2??????? Opera5

    ??? event??????????????????????? yes??????? yes??????????? yes??????????? yes??????????????????? yes

    ??? event.returnValue??????????? yes??????? yes??????????? no??????????? no??????????????????? no

    ??? event.cancelBubble??????????? yes??????? yes??????????? no??????????? no??????????????????? no

    ??? event.srcElement??????????? yes??????? yes??????????? no??????????? no??????????????????? no

    ??? event.fromElement??????????? yes??????? yes??????????? no??????????? no??????????????????? no

    ???

    ??? */

    ??? Event.prototype.__defineSetter__("returnValue",function(b){//

    ??????? if(!b)this.preventDefault();

    ??????? return b;

    ??????? });

    ??? Event.prototype.__defineSetter__("cancelBubble",function(b){// 設(shè)置或者檢索當前事件句柄的層次冒泡

    ??????? if(b)this.stopPropagation();

    ??????? return b;

    ??????? });

    ??? Event.prototype.__defineGetter__("srcElement",function(){

    ??????? var node=this.target;

    ??????? while(node.nodeType!=1)node=node.parentNode;

    ??????? return node;

    ??????? });

    ??? Event.prototype.__defineGetter__("fromElement",function(){// 返回鼠標移出的源節(jié)點

    ??????? var node;

    ??????? if(this.type=="mouseover")

    ??????????? node=this.relatedTarget;

    ??????? else if(this.type=="mouseout")

    ??????????? node=this.target;

    ??????? if(!node)return;

    ??????? while(node.nodeType!=1)node=node.parentNode;

    ??????? return node;

    ??????? });

    ??? Event.prototype.__defineGetter__("toElement",function(){// 返回鼠標移入的源節(jié)點

    ??????? var node;

    ??????? if(this.type=="mouseout")

    ??????????? node=this.relatedTarget;

    ??????? else if(this.type=="mouseover")

    ??????????? node=this.target;

    ??????? if(!node)return;

    ??????? while(node.nodeType!=1)node=node.parentNode;

    ??????? return node;

    ??????? });

    ??? Event.prototype.__defineGetter__("offsetX",function(){

    ??????? return this.layerX;

    ??????? });

    ??? Event.prototype.__defineGetter__("offsetY",function(){

    ??????? return this.layerY;

    ??????? });

    ??? }

    if(window.Document){// 修正Document的DOM

    ??? /*

    ??????????????????????????????? IE5??????? MacIE5??????? Mozilla??????? Konqueror2.2??????? Opera5

    ??? document.documentElement??? yes??????? yes??????????? yes??????????? yes??????????????????? no

    ??? document.activeElement??????? yes??????? null??????? no??????????? no??????????????????? no

    ???

    ??? */

    ??? }

    if(window.Node){// 修正Node的DOM

    ??? /*

    ??????????????????????????????? IE5??????? MacIE5??????? Mozilla??????? Konqueror2.2??????? Opera5

    ??? Node.contains??????????????? yes??????? yes??????????? no??????????? no??????????????????? yes

    ??? Node.replaceNode??????????? yes??????? no??????????? no??????????? no??????????????????? no

    ??? Node.removeNode??????????????? yes??????? no??????????? no??????????? no??????????????????? no

    ??? Node.children??????????????? yes??????? yes??????????? no??????????? no??????????????????? no

    ??? Node.hasChildNodes??????????? yes??????? yes??????????? yes??????????? yes??????????????????? no

    ??? Node.childNodes??????????????? yes??????? yes??????????? yes??????????? yes??????????????????? no

    ??? Node.swapNode??????????????? yes??????? no??????????? no??????????? no??????????????????? no

    ??? Node.currentStyle??????????? yes??????? yes??????????? no??????????? no??????????????????? no

    ???

    ??? */

    ??? Node.prototype.replaceNode=function(Node){// 替換指定節(jié)點

    ??????? this.parentNode.replaceChild(Node,this);

    ??????? }

    ??? Node.prototype.removeNode=function(removeChildren){// 刪除指定節(jié)點

    ??????? if(removeChildren)

    ??????????? return this.parentNode.removeChild(this);

    ??????? else{

    ??????????? var range=document.createRange();

    ??????????? range.selectNodeContents(this);

    ??????????? return this.parentNode.replaceChild(range.extractContents(),this);

    ??????????? }

    ??????? }

    ??? Node.prototype.swapNode=function(Node){// 交換節(jié)點

    ??????? var nextSibling=this.nextSibling;

    ??????? var parentNode=this.parentNode;

    ??????? node.parentNode.replaceChild(this,Node);

    ??????? parentNode.insertBefore(node,nextSibling);

    ??????? }

    ??? }

    if(window.HTMLElement){

    ??? HTMLElement.prototype.__defineGetter__("all",function(){

    ??????? var a=this.getElementsByTagName("*");

    ??????? var node=this;

    ??????? a.tags=function(sTagName){

    ??????????? return node.getElementsByTagName(sTagName);

    ??????????? }

    ??????? return a;

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("parentElement",function(){

    ??????? if(this.parentNode==this.ownerDocument)return null;

    ??????? return this.parentNode;

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("children",function(){

    ??????? var tmp=[];

    ??????? var j=0;

    ??????? var n;

    ??????? for(var i=0;i<this.childNodes.length;i++){

    ??????????? n=this.childNodes[i];

    ??????????? if(n.nodeType==1){

    ??????????????? tmp[j++]=n;

    ??????????????? if(n.name){

    ??????????????????? if(!tmp[n.name])

    ??????????????????????? tmp[n.name]=[];

    ??????????????????? tmp[n.name][tmp[n.name].length]=n;

    ??????????????????? }

    ??????????????? if(n.id)

    ??????????????????? tmp[n.id]=n;

    ??????????????? }

    ??????????? }

    ??????? return tmp;

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("currentStyle", function(){

    ??????? return this.ownerDocument.defaultView.getComputedStyle(this,null);

    ??????? });

    ??? HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){

    ??????? var r=this.ownerDocument.createRange();

    ??????? r.setStartBefore(this);

    ??????? var df=r.createContextualFragment(sHTML);

    ??????? this.parentNode.replaceChild(df,this);

    ??????? return sHTML;

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("outerHTML",function(){

    ??????? var attr;

    ??????? var attrs=this.attributes;

    ??????? var str="<"+this.tagName;

    ??????? for(var i=0;i<attrs.length;i++){

    ??????????? attr=attrs[i];

    ??????????? if(attr.specified)

    ??????????????? str+=" "+attr.name+'="'+attr.value+'"';

    ??????????? }

    ??????? if(!this.canHaveChildren)

    ??????????? return str+">";

    ??????? return str+">"+this.innerHTML+"</"+this.tagName+">";

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){

    ??????? switch(this.tagName.toLowerCase()){

    ??????????? case "area":

    ??????????? case "base":

    ??????????? case "basefont":

    ??????????? case "col":

    ??????????? case "frame":

    ??????????? case "hr":

    ??????????? case "img":

    ??????????? case "br":

    ??????????? case "input":

    ??????????? case "isindex":

    ??????????? case "link":

    ??????????? case "meta":

    ??????????? case "param":

    ??????????????? return false;

    ??????????? }

    ??????? return true;

    ??????? });

    ?

    ??? HTMLElement.prototype.__defineSetter__("innerText",function(sText){

    ??????? var parsedText=document.createTextNode(sText);

    ??????? this.innerHTML=parsedText;

    ??????? return parsedText;

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("innerText",function(){

    ??????? var r=this.ownerDocument.createRange();

    ??????? r.selectNodeContents(this);

    ??????? return r.toString();

    ??????? });

    ??? HTMLElement.prototype.__defineSetter__("outerText",function(sText){

    ??????? var parsedText=document.createTextNode(sText);

    ??????? this.outerHTML=parsedText;

    ??????? return parsedText;

    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("outerText",function(){

    ??????? var r=this.ownerDocument.createRange();

    ??????? r.selectNodeContents(this);

    ??????? return r.toString();

    ??????? });

    ??? HTMLElement.prototype.attachEvent=function(sType,fHandler){

    ??????? var shortTypeName=sType.replace(/on/,"");

    ??????? fHandler._ieEmuEventHandler=function(e){

    ??????????? window.event=e;

    ??????????? return fHandler();

    ??????????? }

    ??????? this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);

    ??????? }

    ??? HTMLElement.prototype.detachEvent=function(sType,fHandler){

    ??????? var shortTypeName=sType.replace(/on/,"");

    ??????? if(typeof(fHandler._ieEmuEventHandler)=="function")

    ??????????? this.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);

    ??????? else

    ??????????? this.removeEventListener(shortTypeName,fHandler,true);

    ??????? }

    ??? HTMLElement.prototype.contains=function(Node){// 是否包含某節(jié)點

    ??????? do if(Node==this)return true;

    ??????? while(Node=Node.parentNode);

    ??????? return false;

    ??????? }

    ??? HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){

    ??????? switch(where){

    ??????????? case "beforeBegin":

    ??????????????? this.parentNode.insertBefore(parsedNode,this);

    ??????????????? break;

    ??????????? case "afterBegin":

    ??????????????? this.insertBefore(parsedNode,this.firstChild);

    ??????????????? break;

    ??????????? case "beforeEnd":

    ??????????????? this.appendChild(parsedNode);

    ??????????????? break;

    ??????????? case "afterEnd":

    ??????????????? if(this.nextSibling)

    ??????????????????? this.parentNode.insertBefore(parsedNode,this.nextSibling);

    ??????????????? else

    ??????????????????? this.parentNode.appendChild(parsedNode);

    ??????????????? break;

    ??????????? }

    ??????? }

    ??? HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr){

    ??????? var r=this.ownerDocument.createRange();

    ??????? r.setStartBefore(this);

    ??????? var parsedHTML=r.createContextualFragment(htmlStr);

    ??????? this.insertAdjacentElement(where,parsedHTML);

    ??????? }

    ??? HTMLElement.prototype.insertAdjacentText=function(where,txtStr){

    ??????? var parsedText=document.createTextNode(txtStr);

    ??????? this.insertAdjacentElement(where,parsedText);

    ??????? }

    ??? HTMLElement.prototype.attachEvent=function(sType,fHandler){

    ??????? var shortTypeName=sType.replace(/on/,"");

    ??????? fHandler._ieEmuEventHandler=function(e){

    ??????????? window.event=e;

    ??????????? return fHandler();

    ??????????? }

    ??????? this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);

    ??????? }

    ??? HTMLElement.prototype.detachEvent=function(sType,fHandler){

    ??????? var shortTypeName=sType.replace(/on/,"");

    ??????? if(typeof(fHandler._ieEmuEventHandler)=="function")

    ??????????? this.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);

    ??????? else

    ??????????? this.removeEventListener(shortTypeName,fHandler,true);

    ??????? }

    ??? }

    //-->

    </script>

    posted @ 2006-08-02 15:15 鄧華的碎碎念 閱讀(328) | 評論 (0)編輯 收藏

    /**
    ?*?? 兼容firefox的 outerHTML? 使用以下代碼后,firefox可以使用element.outerHTML
    ?**/

    if(window.HTMLElement) {
    ??? HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){
    ??????? var r=this.ownerDocument.createRange();
    ??????? r.setStartBefore(this);
    ??????? var df=r.createContextualFragment(sHTML);
    ??????? this.parentNode.replaceChild(df,this);
    ??????? return sHTML;
    ??????? });

    ??? HTMLElement.prototype.__defineGetter__("outerHTML",function(){
    ??? ?var attr;
    ??????? var attrs=this.attributes;
    ??????? var str="<"+this.tagName.toLowerCase();
    ??????? for(var i=0;i<attrs.length;i++){
    ??????????? attr=attrs[i];
    ??????????? if(attr.specified)
    ??????????????? str+=" "+attr.name+'="'+attr.value+'"';
    ??????????? }
    ??????? if(!this.canHaveChildren)
    ??????????? return str+">";
    ??????? return str+">"+this.innerHTML+"</"+this.tagName.toLowerCase()+">";
    ??????? });
    ???????
    ?HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
    ??switch(this.tagName.toLowerCase()){
    ??????????? case "area":
    ??????????? case "base":
    ???????? case "basefont":
    ??????????? case "col":
    ??????????? case "frame":
    ??????????? case "hr":
    ??????????? case "img":
    ??????????? case "br":
    ??????????? case "input":
    ??????????? case "isindex":
    ??????????? case "link":
    ??????????? case "meta":
    ??????????? case "param":
    ??????????? return false;
    ??????? }
    ??????? return true;

    ???? });
    }


    測試有效.




    關(guān)于insertAdjacentHTML兼容的解新決辦法

    //---在組件最后插入html代碼
    function InsertHtm(op,code,isStart){
    if(Dvbbs_IsIE5)
    op.insertAdjacentHTML(isStart ? "afterbegin" : "afterEnd",code);
    else{
    var range=op.ownerDocument.createRange();
    range.setStartBefore(op);
    var fragment = range.createContextualFragment(code);
    if(isStart)
    op.insertBefore(fragment,op.firstChild);
    else
    op.appendChild(fragment);

    }
    }







    ?

    關(guān)于inner/outerHTML在NC6中的參考

    DOM level 1 has no methods to allow for insertion of unparsed HTML into 
    the document tree (as IE allows with insertAdjacentHTML or assignment 
    to inner/outerHTML).
    NN6 (currently in beta as NN6PR3) know supports the 
      .innerHTML
    property of HTMLElements so that you can read or write the innerHTML of 
    a page element like in IE4+.
    NN6 also provides a DOM level 2 compliant Range 
    object to which a
      createContextualFragment('html source string')
    was added to spare DOM scripters the task of parsing html and creating 
    DOM elements.
    You create a Range with
      var range = document.createRange();
    Then you should set its start point to the element where you want to 
    insert the html for instance
      var someElement = document.getElementById('elementID');
      range.setStartAfter(someElement);
    Then you create a document fragment from the html source to insert for 
    example
      var docFrag = 
        range.createContextualFragment('<P>Kibology for all.</P>');
    and insert it with DOM methods
      someElement.appendChild(docFrag);
    
    The Netscape JavaScript 1.5 version even provides so called setters for 
    properties which together with the ability to prototype the DOM 
    elements allows to emulate setting of outerHMTL for NN6:
    
    <SCRIPT LANGUAGE="JavaScript1.5">
    if (navigator.appName == 'Netscape') {
      HTMLElement.prototype.outerHTML setter =
        function (html) {
          this.outerHTMLInput = html;
          var range = this.ownerDocument.createRange();
          range.setStartBefore(this);
          var docFrag = range.createContextualFragment(html);
          this.parentNode.replaceChild(docFrag, this);
      }
    }
    </SCRIPT>
     
    If you insert that script block you can then write cross browser code 
    assigning to
      .innerHTML
      .outerHTML
    for instance
       document.body.innerHTML = '<P>Scriptology for all</P>';
    which works with both IE4/5 and NN6.
    
    The following provides getter functions for 
      .outerHTML
    to allow to read those properties in NN6 in a IE4/5 compatible way. 
    Note that while the scheme of traversing the document tree should point 
    you in the right direction the code example might not satisfy your 
    needs as there are subtle difficulties when trying to reproduce the 
    html source from the document tree. See for yourself whether you like 
    the result and improve it as needed to cover other exceptions than 
    those handled (for the empty elements and the textarea element).
    
    <HTML>
    <HEAD>
    <STYLE>
    
    </STYLE>
    <SCRIPT LANGUAGE="JavaScript1.5">
    var emptyElements = {
      HR: true, BR: true, IMG: true, INPUT: true
    };
    var specialElements = {
      TEXTAREA: true
    };
    HTMLElement.prototype.outerHTML getter = function () {
      return getOuterHTML (this);
    }
    function getOuterHTML (node) {
      var html = '';
      switch (node.nodeType) {
        case Node.ELEMENT_NODE:
          html += '<';
          html += node.nodeName;
          if (!specialElements[node.nodeName]) {
            for (var a = 0; a < node.attributes.length; a++)
              html += ' ' + node.attributes[a].nodeName.toUpperCase() +
                      '="' + node.attributes[a].nodeValue + '"';
            html += '>'; 
            if (!emptyElements[node.nodeName]) {
              html += node.innerHTML;
              html += '<\/' + node.nodeName + '>';
            }
          }
          else switch (node.nodeName) {
            case 'TEXTAREA':
              for (var a = 0; a < node.attributes.length; a++)
                if (node.attributes[a].nodeName.toLowerCase() != 'value')
                  html += ' ' + node.attributes[a].nodeName.toUpperCase() +
                          '="' + node.attributes[a].nodeValue + '"';
                else 
                  var content = node.attributes[a].nodeValue;
              html += '>'; 
              html += content;
              html += '<\/' + node.nodeName + '>';
              break; 
          }
          break;
        case Node.TEXT_NODE:
          html += node.nodeValue;
          break;
        case Node.COMMENT_NODE:
          html += '<!' + '--' + node.nodeValue + '--' + '>';
          break;
      }
      return html;
    }
    
    </SCRIPT>
    </HEAD>
    <BODY>
    <A HREF="javascript: alert(document.documentElement.outerHTML); void 0">
    show document.documentElement.outerHTML
    </A>
    |
    <A HREF="javascript: alert(document.body.outerHTML); void 0">
    show document.body.outerHTML
    </A>
    |
    <A HREF="javascript: alert(document.documentElement.innerHTML); void 0">
    show document.documentElement.innerHTML
    </A>
    |
    <A HREF="javascript: alert(document.body.innerHTML); void 0">
    show document.body.innerHTML
    </A>
    <FORM NAME="formName">
    <TEXTAREA NAME="aTextArea" ROWS="5" COLS="20">
    JavaScript.FAQTs.com
    Kibology for all.
    </TEXTAREA>
    </FORM>
    <DIV>
    <P>
    JavaScript.FAQTs.com
    </P>
    <BLOCKQUOTE>
    Kibology for all.
    <BR>
    All for Kibology.
    </BLOCKQUOTE>
    </DIV>
    </BODY>
    </HTML>
    
    Note that the getter/setter feature is experimental and its syntax is 
    subject to change.








    ?

    HTMLElement.prototype.innerHTML setter = function (str) {
    var r = this.ownerDocument.createRange();
    r.selectNodeContents(this);
    r.deleteContents();
    var df = r.createContextualFragment(str);
    this.appendChild(df);

    return str;
    }

    HTMLElement.prototype.outerHTML setter = function (str) {
    var r = this.ownerDocument.createRange();
    r.setStartBefore(this);
    var df = r.createContextualFragment(str);
    this.parentNode.replaceChild(df, this);
    return str;
    }
    				
    HTMLElement.prototype.innerHTML getter = function () {
    return getInnerHTML(this);
    }
    function getInnerHTML(node) {
    var str = "";
    for (var i=0; i<node.childNodes.length; i++)
    str += getOuterHTML(node.childNodes.item(i));
    return str;
    }
    HTMLElement.prototype.outerHTML getter = function () {
    return getOuterHTML(this)
    }
    function getOuterHTML(node) {
    var str = "";

    switch (node.nodeType) {
    case 1: // ELEMENT_NODE
    str += "<" + node.nodeName;
    for (var i=0; i<node.attributes.length; i++) {
    if (node.attributes.item(i).nodeValue != null) {
    str += " "
    str += node.attributes.item(i).nodeName;
    str += "=\"";
    str += node.attributes.item(i).nodeValue;
    str += "\"";
    }
    }
       if (node.childNodes.length == 0 && leafElems[node.nodeName])
    str += ">";
    else {
    str += ">";
    str += getInnerHTML(node);
    str += "<" + node.nodeName + ">"
    }
    break;

    case 3: //TEXT_NODE
    str += node.nodeValue;
    break;

    case 4: // CDATA_SECTION_NODE
    str += "<![CDATA[" + node.nodeValue + "]]>";
    break;

    case 5: // ENTITY_REFERENCE_NODE
    str += "&" + node.nodeName + ";"
    break;
      case 8: // COMMENT_NODE
    str += "<!--" + node.nodeValue + "-->"
    break;
    }
     return str;
    }
    				
    var _leafElems = ["IMG", "HR", "BR", "INPUT"];
    var leafElems = {};
    for (var i=0; i<_leafElems.length; i++)
    leafElems[_leafElems[i]] = true;
    然后我們可以封成JS引用
    				
    if (/Mozilla\/5\.0/.test(navigator.userAgent))
    document.write('<script type="text/javascript" src="mozInnerHTML.js"></sc' + 'ript>');





    ====================================================================
    <script language="JavaScript" type="Text/JavaScript">
    <!--
    var emptyElements = { HR: true, BR: true, IMG: true, INPUT: true }; var specialElements = { TEXTAREA: true };
    HTMLElement.prototype.outerHTML getter = function() {
    ????return getOuterHTML(this);
    ????}
    ??function getOuterHTML(node) {
    ????var html = '';
    ????switch (node.nodeType) {
    ??????case Node.ELEMENT_NODE: html += '<'; html += node.nodeName; if (!specialElements[node.nodeName]) {
    ????????for (var a = 0; a < node.attributes.length; a++)
    ??????????html += ' ' + node.attributes[a].nodeName.toUpperCase() + '="' + node.attributes[a].nodeValue + '"';
    ????????html += '>';
    ????????if (!emptyElements[node.nodeName]) {
    ??????????html += node.innerHTML;
    ??????????html += '<\/' + node.nodeName + '>';
    ??????????}
    ????????} else
    ????????switch (node.nodeName) {
    ??????????case 'TEXTAREA': for (var a = 0; a < node.attributes.length; a++)
    ????????????if (node.attributes[a].nodeName.toLowerCase() != 'value')
    ??????????????html
    ????????????????+= ' ' + node.attributes[a].nodeName.toUpperCase() + '="' + node.attributes[a].nodeValue
    ?????????????????? + '"';
    ????????????else
    ??????????????var content = node.attributes[a].nodeValue;
    ????????????html += '>'; html += content; html += '<\/' + node.nodeName + '>'; break;
    ??????????} break;
    ??????case Node.TEXT_NODE: html += node.nodeValue; break;
    ??????case Node.COMMENT_NODE: html += '<!' + '--' + node.nodeValue + '--' + '>'; break;
    ??????}
    ????return html;
    ????}
    //-->
    </script>
    ?

    posted @ 2006-08-01 11:05 鄧華的碎碎念 閱讀(4146) | 評論 (1)編輯 收藏

    vi命令是unix下常用而重要命令,可在全屏幕方式下編輯一個或多個文件。若在vi執(zhí)行時
    沒有指定一個文件,那么vi命令會自動產(chǎn)生一個無名的空的工作文件。若指定的文件不存在,
    那么就按指定的文件名創(chuàng)建一個新的文件。若對文件的修改不保存的話,v i命令并不改變原
    來文件的內(nèi)容。

      注意:vi命令并不鎖住所編輯的文件,因此多個用戶可能在同時編輯一個文件,那么最后
    保存的文件版本將被保留。

    下面是vi命令使用的一些選項及含義:

      -c sub-command 在對指定的文件編輯前,先執(zhí)行指定的命令 sub-command .

      -r filename 恢復(fù)指定的文件filename .

      -R 將指定的文件以只讀的方式放入編輯器中,這樣不會保存對文件的任何修 改。

      -y number 將編輯窗口的大小設(shè)為number行。

      下面是vi編輯所處的三種模式:

      .命令模式 進入vi時所處的模式。在此模式下用戶可輸入各種子命令對進行*作,如刪除行、
    粘貼行、移向下一個字、移向不同行等。

      .文本輸入模式 在此模式下可以修改一行的內(nèi)容并增添新行。在命令模式下鍵入a 、i 或
    c鍵可進入文本輸入模式,按Escape鍵可返回命令模式。

      .命令項模式 在此模式下,可以通過子命令輸入更多的參數(shù)。如:w子命令要求輸入一文
    件名,"/"子命令要求輸入一個查找項。用戶使用Escape鍵返回命令模式。


    下面是自命令模式下執(zhí)行的,在同一行上移動的自命令:

      h 將光標左移一格。

      l 將光標右移一格。

      j 將光標下移一格。

      k 將光標上移一格。

      w 將光標移到下一個小字的前面。

      W 將光標移到下一個大字的前面。

      b 將光標移到前一個小字的前面。

      B 將光標移到前一個大字的前面。

      e 將光標移到下一個小字的后面。

      E 將光標移到前一個大字的后面。

      fc 把光標移到同一行的下一個c字符處。

      Fc 把光標移到同一行的前一個c字符處。

      tc 把光標移到同一行的下一個字符c的前一格。

      Tc 把光標移到同一行的前一個字符c的后一格。

      number| 把光標移到遞number列上。

    下面是命令模式下在行間移動的子命令:

      +或Enter 把光標移至下一行第一個非空白字符。

      - 把光標移至上一行第一個非空白字符。

      0 把光標移到當前行的第一個字符處。

      $ 把光標移到當前行的最后一個字符處。

      H 把光標移到屏幕最頂端一行。

      L 把光標移到屏幕最底端一行。

      M 把光標移到屏幕中間。

    下面是命令模式下改變屏幕顯示的子命令:

      z- 把當前行作為屏幕的最后一行,并重新顯示屏幕。

      z. 把當前行作為屏幕的中間一行,并重新顯示屏幕。

      Ctrl+l 重新顯示屏幕當前內(nèi)容。

      /pattern/z- 尋找pattern的下一個位置,并把所在行設(shè)為屏幕的最后一行。

    下面是在命令模式下用來顯示頁面的子命令:

      Ctrl + f向后滾一頁。

      Ctrl + d向后滾半頁。

      Ctrl + b向前滾一頁。

      Ctrl + u向前滾半頁。

      Ctrl + e屏幕向下滾一行。

      Ctrl + y屏幕項上滾一行。

    下面是在命令模式下用來查找字符串所使用的子命令:

      /pattern 向后尋找指定的pattern ,若遇到文件尾,則從頭再開始。

      ?pattern 向前尋找指定的pattern ,若遇到文件頭,則從尾再開始。

      n 在上次指定的方向上,再次執(zhí)行上次定義的查找。

      N 在上次指定的方向的相反方向上,再次執(zhí)行上次定義的查找。

      /pattern/+number 將光標停在包含pattern的行后面第number行上。

      /pattern/-number 將光標停在包含pattern的行前面第number行上。

      % 移到匹配的"()"或"{}"上。

    下面是在文本輸入模式下用來輸入文本的子命令(用戶可在任何時候按Escape返回到命令模式):

      a 在光標之后開始輸入文本。

      A在行尾開始輸入文本。

      i在光標之前開始輸入文本。

      I在行首第一個非空白字符前輸入文本。

      o在光標所在行后插入一空行。

      O在光標所在行前插入一空行。

    下面是在命令模式下改變文本所使用的子命令(用戶可在任何的時候按Escape鍵返回到命令模式):

      cc或S 修改一整行。

      C 改變一行光標位置以后的部分。

      cw 改變光標所在單詞。

      dd刪除當前行。

      D 刪除光標所在行光標后面的內(nèi)容。

      dw刪除光標所在的單詞。

      J 把下一行內(nèi)容加到本行行尾。

      rc把光符所在字符替換成c .

      R 覆蓋本行內(nèi)容。

      u恢復(fù)上一次的修改。

      x刪除光標所在的字符。

      ~ 改變光標所在出字符的大小寫。

      . 重復(fù)上一個*作。

      <<把當前行移到左邊。

      >>把當前行移到右邊。

    下面是用于文件中拷貝文本的字命令:

      p 將緩沖區(qū)內(nèi)容取到光標所在行的下面一行。

      P 將緩沖區(qū)內(nèi)容取到光標所在行的上面一行。

      "bd 將文本刪除至有名緩沖區(qū)b .

      "bp 張貼有名緩沖區(qū)b中內(nèi)容。

      yy把當前行放入緩沖區(qū)。

      Y 把當前行放入緩沖區(qū)。

      Yw把光標所在的單詞放入緩沖區(qū)。

    下面是用于保存文件的子命令:

      :w 回寫修改后的文件。

      :w filename 當filename不存在時,把修改后的文件存為文件filename ,當文件filename
    存在時,報錯。

      !w filename 如果文件filename存在時,把修改后的文件保存為文件filename .

    下面列出了在vi編輯的多個文件之間切換所用的子命令:

      :n開始編輯vi激活的文件列表中的下一個文件。

      :n filenames 指定將被編輯的新的文件列表。

    下面列出了用于在當前文件和另外一個文件間切換的子命令:

      :e filename 使用filename激活vi (在vi中裝入另一個文件filename)。

      e!重新裝入當前文件,若當前文件有改動,則丟棄以前的改動。

      :e+filename 使用filename激活vi ,并從文件尾部開始編輯。

      :e+number filename 使用filename激活vi ,并在第number行開始編輯。

      :e# 開始編輯另外一個文件。

    下面是在本文件中加入其他文件代碼所使用的子命令:

      :r filename讀取filename文件,并將其內(nèi)容加到當前文件后。

      :r ! command執(zhí)行command文件,并將其輸出加到當前文件后。

    下面是vi中其他的子命令:

      ctrl+g 取得正在編輯文件的有關(guān)信息。

      :sh啟動sh ,從sh中返回可用exit或ctrl+d .

      :! Command 執(zhí)行命令command .

      !!重新執(zhí)行上次的:! Command子命令。

      :q退出vi ,若用戶對編輯的文件有所修改,系統(tǒng)不會讓用戶使用q命令退出。

      :q!退出vi而不管是否對文件有改動。

      ZZ或:wq 保存對文件的修改并退出vi .

      用戶可在一個特殊的文件.exrc中定義特殊的vi命令。在vi中使用這些命令時,必須在該
    命令前加上一個冒號( :) 。
    posted @ 2006-07-30 23:00 鄧華的碎碎念 閱讀(194) | 評論 (0)編輯 收藏

    爭取下個星期前完成blog

    posted @ 2006-05-27 17:59 鄧華的碎碎念 閱讀(270) | 評論 (2)編輯 收藏

    1.最基本,最常用的,測試物理網(wǎng)絡(luò)的

    ping 192.168.0.8 -t ,參數(shù)-t是等待用戶去中斷測試

    2.查看DNS、IP、Mac等

    A.Win98:winipcfg

    B.Win2000以上:Ipconfig/all

    C.NSLOOKUP:如查看河北的DNS

    C:\>nslookup

    Default Server: ns.hesjptt.net.cn

    Address: 202.99.160.68

    >server 202.99.41.2 則將DNS改為了41.2

    > pop.pcpop.com

    Server: ns.hesjptt.net.cn

    Address: 202.99.160.68

    Non-authoritative answer:

    Name: pop.pcpop.com

    Address: 202.99.160.212

    3.網(wǎng)絡(luò)信使 (經(jīng)常有人問的~)

    Net send 計算機名/IP|* (廣播) 傳送內(nèi)容,注意不能跨網(wǎng)段

    net stop messenger 停止信使服務(wù),也可以在面板-服務(wù)修改

    net start messenger 開始信使服務(wù)

    4.探測對方對方計算機名,所在的組、域及當前用戶名 (追捕的工作原理)

    ping -a IP -t ,只顯示NetBios名

    nbtstat -a 192.168.10.146 比較全的

    5.netstat -a 顯示出你的計算機當前所開放的所有端口

    netstat -s -e 比較詳細的顯示你的網(wǎng)絡(luò)資料,包括TCP、UDP、ICMP 和 IP的統(tǒng)計等

    6.探測arp綁定(動態(tài)和靜態(tài))列表,顯示所有連接了我的計算機,顯示對方IP和MAC地址

    arp -a

    7.在代理服務(wù)器端

    捆綁IP和MAC地址,解決局域網(wǎng)內(nèi)盜用IP!:

    ARP -s 192.168.10.59 00 -50-ff-6c-08-75

    解除網(wǎng)卡的IP與MAC地址的綁定:

    arp -d 網(wǎng)卡IP

    8.在網(wǎng)絡(luò)鄰居上隱藏你的計算機 (讓人家看不見你!)

    net config server /hidden:yes

    net config server /hidden:no 則為開啟

    9.幾個net命令

    A.顯示當前工作組服務(wù)器列表 net view,當不帶選項使用本命令時,它就會顯示當前域或網(wǎng)絡(luò)上的計算機上的列表。

    比如:查看這個IP上的共享資源,就可以

    C:\>net view 192.168.10.8

    在 192.168.10.8 的共享資源

    資源共享名 類型 用途 注釋

    網(wǎng)站服務(wù) Disk

    A.命令成功完成。

    B.查看計算機上的用戶帳號列表 net user

    C.查看網(wǎng)絡(luò)鏈接 net use

    例如:net use z: \\192.168.10.8\movie 將這個IP的movie共享目錄映射為本地的Z盤

    D.記錄鏈接 net session

    例如:

    C:\>net session

    計算機 用戶名 客戶類型 打開空閑時間

    192.168.10.110 ROME Windows 2000 2195 0 00:03:12

    \\192.168.10.51 ROME Windows 2000 2195 0 00:00:39

    命令成功完成。

    10.路由跟蹤命令

    A. tracert pop.pcpop.com

    B. pathping pop.pcpop.com 除了顯示路由外,還提供325S的分析,計算丟失包的%

    11.關(guān)于共享安全的幾個命令

    A.查看你機器的共享資源 net share

    B.手工刪除共享(可以編個bat文件,開機自運行,把共享都刪了!)

    net share c$ /d

    net share d$ /d

    net share ipc$ /d

    net share admin$ /d

    注意$后有空格。

    C.增加一個共享:

    c:\net share mymovie=e:\downloads\movie /users:1

    mymovie 共享成功。

    同時限制鏈接用戶數(shù)為1人。

    12.在DOS行下設(shè)置靜態(tài)IP

    A.設(shè)置靜態(tài)IP

    CMD

    netsh

    netsh>int

    interface>ip

    interface ip>set add "本地鏈接" static IP地址 mask gateway

    B.查看IP設(shè)置

    interface ip>show address

    Arp

    顯示和修改“地址解析協(xié)議 (ARP)”緩存中的項目。ARP 緩存中包含一個或多個表,它們用于存儲 IP 地址及其經(jīng)過解析的以太網(wǎng)或令牌環(huán)物理地址。計算機上安裝的每一個以太網(wǎng)或令牌環(huán)網(wǎng)絡(luò)適配器都有自己單獨的表。如果在沒有參數(shù)的情況下使用,則 arp 命令將顯示幫助信息。

    語法

    arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]

    參數(shù)

    -a [InetAddr] [-N IfaceAddr]

    顯示所有接口的當前 ARP 緩存表。要顯示指定 IP 地址的 ARP 緩存項,請使用帶有 InetAddr 參數(shù)的 arp -a,此處的 InetAddr 代表指定的 IP 地址。要顯示指定接口的 ARP 緩存表,請使用 -N IfaceAddr 參數(shù),此處的 IfaceAddr 代表分配給指定接口的 IP 地址。-N 參數(shù)區(qū)分大小寫。

    -g [InetAddr] [-N IfaceAddr]

    與 -a 相同。

    -d InetAddr [IfaceAddr]

    刪除指定的 IP 地址項,此處的 InetAddr 代表 IP 地址。對于指定的接口,要刪除表中的某項,請使用 IfaceAddr 參數(shù),此處的 IfaceAddr 代表分配給該接口的 IP 地址。要刪除所有項,請使用星號 (*) 通配符代替 InetAddr。

    -s InetAddr EtherAddr [IfaceAddr]

    向 ARP 緩存添加可將 IP 地址 InetAddr 解析成物理地址 EtherAddr 的靜態(tài)項。要向指定接口的表添加靜態(tài) ARP 緩存項,請使用 IfaceAddr 參數(shù),此處的 IfaceAddr 代表分配給該接口的 IP 地址。

    /?

    在命令提示符顯示幫助。

    注釋

    InetAddr 和 IfaceAddr 的 IP 地址用帶圓點的十進制記數(shù)法表示。

    物理地址 EtherAddr 由六個字節(jié)組成,這些字節(jié)用十六進制記數(shù)法表示并且用連字符隔開(比如,00-AA-00-4F-2A-9C)。

    通過 -s 參數(shù)添加的項屬于靜態(tài)項,它們不會 ARP 緩存中超時。如果終止 TCP/IP 協(xié)議后再啟動,這些項會被刪除。要創(chuàng)建永久的靜態(tài) ARP 緩存項,請在批處理文件中使用適當?shù)?arp 命令并通過“計劃任務(wù)程序”在啟動時運行該批處理文件。

    只有當網(wǎng)際協(xié)議 (TCP/IP) 協(xié)議在 網(wǎng)絡(luò)連接中安裝為網(wǎng)絡(luò)適配器屬性的組件時,該命令才可用。

    范例

    要顯示所有接口的 ARP 緩存表,可鍵入:

    arp -a

    對于指派的 IP 地址為 10.0.0.99 的接口,要顯示其 ARP 緩存表,可鍵入:

    Arp -a -N 10.0.0.99

    要添加將 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的靜態(tài) ARP 緩存項,可鍵入:

    Arp -s 10.0.0.80 00-AA-00-4F-2A-9C

    At

    計劃在指定時間和日期在計算機上運行命令和程序。at 命令只能在“計劃”服務(wù)運行時使用。如果在沒有參數(shù)的情況下使用,則 at 列出已計劃的命令。

    語法

    at [\\ComputerName] [{[ID] [/delete]|/delete [/yes]}]

    at [[\\ComputerName] hours:minutes [/interactive] [{/every:date[,...]|/next:date[,...]}] command]

    參數(shù)

    \\computername

    指定遠程計算機。如果省略該參數(shù),則 at 計劃本地計算機上的命令和程序。

    ID

    指定指派給已計劃命令的識別碼。

    /delete

    取消已計劃的命令。如果省略了 ID,則計算機中所有已計劃的命令將被取消。

    /yes

    刪除已計劃的事件時,對來自系統(tǒng)的所有詢問都回答“是”。

    hours:minutes

    指定命令運行的時間。該時間用 24 小時制(即從 00:00 [午夜] 到 23:59)的 小時: 分鐘格式表示。

    /interactive

    對于在運行 command 時登錄的用戶,允許 command 與該用戶的桌面進行交互。

    /every:

    在每個星期或月的指定日期(例如,每個星期四,或每月的第三天)運行 command 命令。

    date

    指定運行命令的日期。可以指定一周的某日或多日(即,鍵入 M、T、W、Th、F、S、Su)或一個月中的某日或多日(即,鍵入從 1 到31 之間的數(shù)字)。用逗號分隔多個日期項。如果省略了 date,則 at 使用該月的當前日。

    /next:

    在下一個指定日期(比如,下一個星期四)到來時運行 command。

    command

    指定要運行的 Windows 命令、程序(.exe 或 .com 文件)或批處理程序(.bat 或 .cmd 文件)。當命令需要路徑作為參數(shù)時,請使用絕對路徑,也就是從驅(qū)動器號開始的整個路徑。如果命令在遠程計算機上,請指定服務(wù)器和共享名的通用命名協(xié)定 (UNC) 符號,而不是遠程驅(qū)動器號。

    /?

    在命令提示符顯示幫助。

    注釋

    Schtasks 是功能更為強大的超集命令行計劃工具,它含有 at 命令行工具中的所有功能。對于所有的命令行計劃任務(wù),都可以使用 schtasks 來替代 at。有關(guān) schtasks 的詳細信息,請參閱“相關(guān)主題”。

    使用 at

    使用 at 命令時,要求您必須是本地 Administrators 組的成員。

    加載 Cmd.exe

    在運行命令之前,At 不會自動加載 Cmd.exe (命令解釋器)。如果沒有運行可執(zhí)行文件 (.exe),則在命令開頭必須使用如下所示的方法專門加載 Cmd.exe:

    cmd /c dir > c:\test.out。

    查看已計劃的命令

    當不帶命令行選項使用 at 時,計劃任務(wù)會出現(xiàn)在類似于以下格式的表中:

    Status ID Day Time Command Line

    OK 1 Each F 4:30 PM net send group leads status due

    OK 2 Each M 12:00 AM chkstor > check.file

    OK 3 Each F 11:59 PM backup2.bat

    包含標識號 (ID)

    當在命令提示下使用帶有標識號 (ID) 的 at 命令時,單個任務(wù)項的信息會顯示在類似于下面的格式中:

    Task ID: 1

    Status:OK

    Schedule:Each F

    Time of Day:4:30 PM

    Command:net send group leads status due當計劃帶有 at 的命令(尤其是帶有命令行選項的命令)后,要通過鍵入不帶命令行選項的 at 來檢查該命令語法是否輸入正確。如果顯示在“命令行”列中的信息不正確,請刪除該命令,然后重新鍵入它。如果還不正確,則可以在重新鍵入該命令時讓它少帶些命令行選項。

    查看結(jié)果

    使用 at 的已經(jīng)計劃的命令作為后臺程序運行。運行結(jié)果不會顯示在計算機上。要將輸出重定向到文件,請使用重定向符號 (> )。如果將輸出重定向到文件,則不論是在命令行還是在批處理文件中使用 at,都需要在重定向符號之前使用轉(zhuǎn)義符 (^)。例如,要重定向輸出到 Output.text 文件,則要鍵入:

    at 14:45 c:\test.bat ^>c:\output.txt

    執(zhí)行命令的當前目錄為 systemroot 文件夾。

    更改系統(tǒng)時間

    在使用 at 命令計劃了要運行的命令之后,如果更改了計算機的系統(tǒng)時間,則通過鍵入不帶命令行選項的 at 可使 at 計劃程序與修改后的系統(tǒng)時間同步。

    存儲命令

    已計劃的命令存儲在注冊表中。這樣,如果重新啟動“計劃”服務(wù),則不會丟失計劃任務(wù)。

    連接到網(wǎng)絡(luò)驅(qū)動器

    對于需要訪問網(wǎng)絡(luò)的計劃作業(yè),請不要使用已重新定向的驅(qū)動器。“計劃”服務(wù)可能無法訪問這些重定向的驅(qū)動器,或者,在該計劃任務(wù)運行時如果有其他用戶登錄,則這些重定向的驅(qū)動器可能不會出現(xiàn)。因此,對于計劃作業(yè),請使用 UNC 路徑。例如:

    at 1:00pm my_backup \\server\share

    請不要使用下述語法(其中 x: ?表示由用戶建立的連接):

    at 1:00pm my_backup x:

    如果計劃了一個使用驅(qū)動器號的 at 命令來連接共享目錄,則應(yīng)包含一個 at 命令以使在完成該驅(qū)動器的使用時斷開與驅(qū)動器的連接。如果不能斷開與驅(qū)動器的連接,則在命令提示下,所指派的驅(qū)動器號將不可用。

    范例

    要顯示 Marketing 服務(wù)器上已計劃的命令列表,請鍵入:

    at \\marketing

    要了解服務(wù)器 Corp 上標識號為 3 的命令的詳細信息,請鍵入:

    at \\corp 3

    要計劃在上午 8:00 于 Corp 服務(wù)器上運行網(wǎng)絡(luò)共享命令,并將該列表重定向到 Maintenance 服務(wù)器的 Corp.txt 文件(位于 Reports 共享目錄下)中,請鍵入:

    at \\corp 08:00 cmd /c "net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt"

    為了在每五天后的午夜將 Marketing 服務(wù)器的硬盤驅(qū)動器備份到磁帶驅(qū)動器,首先創(chuàng)建名為 Archive.cmd 的批處理程序(它含有備份命令),然后計劃該批處理程序的運行,為此請鍵入:

    at \\marketing 00:00 /every:5,10,15,20,25,30 archive

    要取消當前服務(wù)器上已計劃的所有命令,請按下述方法清除 at 計劃信息:

    at /delete

    如果要運行的命令不是可執(zhí)行 (.exe) 文件,請按如下所示的方法在該命令之前使用 cmd /c 來加載 Cmd.exe:

    cmd /c dir > c:\test.out。

    posted @ 2006-05-25 10:59 鄧華的碎碎念 閱讀(152) | 評論 (0)編輯 收藏

         摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ? import ?java.util.regex. * ; // 導(dǎo)入正則表達式包中的類 ...  閱讀全文
    posted @ 2006-05-24 09:53 鄧華的碎碎念 閱讀(1230) | 評論 (4)編輯 收藏

    前一陣微軟更新了 IE 瀏覽器,針對 IE 的更新,使 Active X內(nèi)容不能自動載入,必須先激活方可使用.這些改變可以在 Adobe 的某些軟件中看到 , 包括
    flashplayer.
    Authorware player,
    shockwave Player,
    SVG Viewer,
    Help Center
    Adobe Reader,

    當然還有 Sun Java, Apple QuickTime, RealNetworks,RealPlayer 和其它的 ActiveX .

    通過某些方法嵌入到 html 頁面中的交互內(nèi)容可能不能響應(yīng)用戶的輸入 ( 例如 , 鍵盤 , 鼠標 )

    直到用戶點擊要么激活要么繼續(xù)

    ?

    現(xiàn)在我們將使用 deconcept 的開源代碼 flashObject 這里下載 Download FlashObject 1.3 來解決這個問題。

    基本方法如下:

    只需要將 flashobject.js 包含在你的 html 頁面內(nèi),然后加上一點 javascript 代碼嵌入 flash swf ok 了.
    它的工作方式如下:

    代碼 :

    <script type="text/javascript" src="flashobject.js"></script>
    <div id="flashcontent">
    This text is replaced by the Flash movie.
    </div>
    <script type="text/javascript">
    var fo = new FlashObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
    fo.write("flashcontent");
    </script>



    簡單分析一下
    1:
    <div id="flashcontent">
    This text is replaced by the Flash movie.
    </div>


    這一段相當于我們在為放置 flash 文件而準備的一個 holder. 有些象我們常用的空的 MovieClip holder. 為放入內(nèi)容而準備的.如果你沒有裝 flashplayer. 那么里面的那行字會顯示出來如顯示為 ”This text is replaced by the Flash movie.” 如果你裝了 flashplayer ,那這行字是不會顯示的,用戶基本上是看不到的,同時它還有一個好處是你可以把這行內(nèi)容變成的你搜索關(guān)鍵字, google 會很容易搜到它的.呵呵,一舉兩得. 下面這段一看就知道是什么了.

    2:
    <script type="text/javascript">
    var fo = new FlashObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
    fo.write("flashcontent");
    </script>


    用來嵌入 swf, 比如當前的影片文件是 ”movie.swf”, id ”mymoive, 寬是 200, 高是 100,flashplayer 版本是 7, 背景色是 #336699.

    下面我們來看一下我們嵌入一個 flash 的范例 .


    根據(jù)上面的基本工作方式 , 我們還要嵌入一些其它的參數(shù) . 來滿足我們一些其它的需要

    比如我們有一個文件名為 ws.swf, 我們想把它嵌入到頁面中 , 又不至于受 IE 更新的影響 .

    1.
    在頁面中包入 flashobject.js 文件
    <script type="text/javascript" src="flashobject.js"></script>
    一般這行代碼可以寫在 body 標簽之前即可 .

    2.
    把下面這段代碼加在它下方 .

    代碼 :
    <div id="flashcontent" style="width: 300px; height: 200px"></div>
    <script type="text/javascript">
    var fo = new FlashObject("ws.swf", "mymovie", "300", "200px", "7", "#336699");
    fo.addParam("quality", "low");
    fo.addParam("wmode", "transparent");
    fo.addParam("salign", "t");
    fo.addParam("scale", "noscale");
    fo.addParam("loop", "false");
    fo.write("flashcontent");
    </script>


    從上面的代碼中我們看出 , 我們將要把 FLASH 放在 id flashcontent 層中 , 它的寬為 300 高為 200 像素 , 那么應(yīng)是和我們的 swf 文件的大小是相同的 . 如果你想縮放也可以是不同的 . 下面 var fo = new FlashObject("ws.swf", "mymovie", "300", "200px", "7", "#336699"); 是嵌入 flash 文件 , 在之前的內(nèi)容已介紹過它里面的參數(shù) , 其中的 ws.swf 可以是相對路徑也可以是絕對路徑 , 如你可以直接輸入網(wǎng)站加上你的 swf 文件名字 .
    在下面的一段就是我們可以加入的參數(shù) , 從上到下分別為 quality 質(zhì)量 ,wmode transparent 透明 ,salign 對齊 ,scale 縮放 ,loop 循環(huán)等 .
    這樣我們的嵌入過程就完成了 .

    如果你想使用 flashVars 來進行 html flash 之前的通訊 , 使用 flashobject 也是很容易的 , 但有一點使用 flashobjcet 時只有在 swf 剛一載入時傳遞參數(shù) . 并且是以值對的形式來傳遞 , 如下 :variable1=value1&variable2=value2&variable3=value3
    使用方法如下 :
    代碼 :
    <script type="text/javascript">
    var fo = new FlashObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
    fo.addVariable("variable1", "value1");
    fo.addVariable("variable2", "value2");
    fo.addVariable("variable3", "value3");
    fo.write("flashcontent");
    </script>


    一旦這一步完成 , 那么所有的變量就已經(jīng)傳入到 flash, 你就可以靈活的在你的 flash 中的 _root 上使用了 .
    deconcept flashObject
    還提供了可以加入其它參數(shù)的說明.你可以詳細查看

    posted @ 2006-05-17 09:32 鄧華的碎碎念 閱讀(1089) | 評論 (0)編輯 收藏

    僅列出標題
    共5頁: 上一頁 1 2 3 4 5 下一頁 
    主站蜘蛛池模板: 另类免费视频一区二区在线观看| 国产精品亚洲片在线花蝴蝶| 91精品导航在线网址免费| 91亚洲一区二区在线观看不卡| 亚洲三级在线免费观看| 亚洲爆乳AAA无码专区| 91麻豆精品国产自产在线观看亚洲 | 免费黄色app网站| 全黄A免费一级毛片| 久久精品国产亚洲av日韩| 日韩高清免费在线观看| 免费日本一区二区| 久操免费在线观看| 免费人成网上在线观看| 黄色三级三级免费看| 亚洲剧情在线观看| 国产免费久久精品| 3d成人免费动漫在线观看| 有码人妻在线免费看片| 亚洲色欲色欲www| 亚洲夜夜欢A∨一区二区三区| 午夜色a大片在线观看免费| 久久国产精品免费观看| 午夜精品免费在线观看| 色播在线永久免费视频网站| 亚洲另类自拍丝袜第五页| 亚洲国产成人久久精品影视| 亚洲AⅤ视频一区二区三区| 啦啦啦完整版免费视频在线观看| 国产大片91精品免费观看不卡| 一级一看免费完整版毛片| 亚洲码和欧洲码一码二码三码| 亚洲色大成网站www尤物| 亚洲国产福利精品一区二区| 亚洲 欧洲 日韩 综合在线| 亚洲理论精品午夜电影| 久久亚洲精品成人| 亚洲无人区午夜福利码高清完整版| 亚洲av最新在线网址| 亚洲精品无码国产| 亚洲精品黄色视频在线观看免费资源|