zoukankan      html  css  js  c++  java
  • js实现静态页面的include功能

        姑且不说为什么会有这样的需求,就谈谈怎么实现吧,当这个需求出来的时候我就想到的是js,一种方式就是fileStream的方式把文件内容读出来在标签里把内容显示出来,再一种方式就是xmlHttpRequest创建对象对远程文件读取,这种更像web方式,前一种应该说是文件操作方式。在后一种方式的考虑阅览器的兼容性,基于这个问题我故意装了IE7.0和firefox,一直用的都是IE6.0。把这两种方式实现的代码贴下,希望能对你有说帮助,更多的是自己一个笔记。
        FileStream方式:
     1<html xmlns="http://www.w3.org/1999/xhtml">
     2<head>
     3<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     4<title>html include实例</title>
     5<SCRIPT language=JavaScript>    
     6  <!--    
     7function ReadFile(id,src)//传入的参数是标签id及文件所在路径 
     8var forReading=1;
     9var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    10var file = fso.OpenTextFile(src,forReading); 
    11var text = file.ReadAll(); //ReadAll读取的是所有内容,ReadLine()则读一行
    12file.Close(); 
    13id.innerHTML=text;          
    14}
      
    15//-->    
    16
    </SCRIPT> 
    17</head>
    18
    19<body onload=ReadFile(xxx,"E:\\htmltest\\top.htm");ReadFile(yy,"E:\\htmltest\\foot.htm");>
    20<span id="top"></span>  
    21<span id="foot"></span>
    22</body>
    23</html>
       xmlHttpRequest方式
      1<html xmlns="http://www.w3.org/1999/xhtml">
      2<head>
      3<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      4<title>读取html实例</title>
      5
      6<script>  
      7    var xmlHttp;   
      8    var rs;   
      9    var isie = false;   
     10    function startRequest(url,divs)
     11    {   
     12        if(window.ActiveXObject) //是IE,下面就要根据版本创建对象
     13        
     14            try
     15            {
     16                 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     17               }

     18              catch(e)
     19               {
     20                try
     21                {
     22                     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
     23                  }

     24                   catch(e)                
     25                {
     26                    try
     27                     {
     28                         xmlHttp=new ActiveXObject("MSXML2.ServerXMLHTTP");
     29                   
     30                     }

     31                     catch (e)
     32                     
     33                    
     34                     }

     35                }

     36              }
      
     37
     38        isie = true;   
     39        }
     
     40        else   //不是IE,可能是firefox或者其他阅览器
     41        {
     42            xmlHttp= new XMLHttpRequest();  
     43        }
      
     44        try{   
     45            if(isie == false ){   
     46                xmlHttp.open("GET", url, false);   
     47                xmlHttp.overrideMimeType("text/html;charset=gb2312");   
     48                xmlHttp.send(null);   
     49                document.getElementById(divs).innerHTML=xmlHttp.responseText;   
     50            }
    else{   
     51                xmlHttp.open("GET", url, false);   
     52                xmlHttp.send(null);   
     53                if(xmlHttp.readyState == 4){           
     54                    if (xmlHttp.status == 200 || xmlHttp.status == 0){   
     55                     document.getElementById(divs).innerHTML=bytes2BSTR(xmlHttp.responseBody);   
     56                    }
       
     57                }
       
     58            }
        
     59        }
    catch(exception){   
     60            document.write('exception:'+exception.message);   
     61        }
       
     62    }
              
     63 
    </script> 
     64//处理乱码问题,还有一种方式是这样的:
     65//<script language=javascript> 
     66//function Recenspace(Html){   
     67//        rs=new ActiveXObject("ADODB.RecordSet");   
     68//      rs.fields.append("a",201,1);   
     69//        rs.open();         
     70//        rs.addNew();   
     71//        rs(0).appendChunk(Html);   
     72//        rs.update();   
     73//        return rs(0).value;   
     74//        rs.close();   
     75//    }   
     76//
    </script>
     77//这种方式需要操作客户端adodb.recordset对象,有可能客户端会不支持
     78<script language="VBScript">   
     79   function bytes2BSTR(vIn)   
     80  dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode   
     81  strReturn=""   
     82  for i=1 to LenB(vIn)   
     83      ThisCharCode=AscB(MidB(vIn,i,1))   
     84      if ThisCharCode<&H80 Then   
     85          strReturn=strReturn & Chr(ThisCharCode)   
     86      else   
     87          NextCharCode=AscB(MidB(vIn,i+1,1))   
     88          strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))   
     89          i=i+1   
     90      end if   
     91      next   
     92      bytes2BSTR=strReturn   
     93  end function   
     94 
    </script>   
     95</head>
     96
     97<body onload=startRequest('cp.htm','top');startRequest('contact.htm','foot');>
     98<span id="top"></span>
     99<span id="foot"></span>
    100</body>
    101</html>
        代码就这样了,进公司快两个星期了,工作跟想象中的不一样。生活就工作吧!有句话叫:坏事它未必就是坏事!生活会让每个人越来越丰富的!

  • 相关阅读:
    31-指针为什么区分类型
    30-多级指针的介绍
    29-指针的练习(包含指针的使用场景)
    28-指针的定义和初始化
    27-指针的概念
    26-字符串函数
    SringMVC Ajax
    SpringMVC返回数据到页面
    springmvc参数传递(二)
    springmvc参数传递(一)
  • 原文地址:https://www.cnblogs.com/medal/p/1245141.html
Copyright © 2011-2022 走看看