一种非常简单的静态网页生成方法介绍

       一、目前的静态页生成方法有简单的模板替换、常见的ASP+FSO等,这里给大家介绍一种更简单的方法。原理就是借助XMLHTTP对象获取目标页面的源代码,然后写入到静态网页文件中。代码如下:

一种非常简单的静态网页生成方法介绍一种非常简单的静态网页生成方法介绍Code
一种非常简单的静态网页生成方法介绍Dim filename,fso,fout
一种非常简单的静态网页生成方法介绍filename
="index.html"        
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍
Set fso=server.CreateObject("Scripting.FileSystemObject")
一种非常简单的静态网页生成方法介绍path
=server.MapPath(filename)      
一种非常简单的静态网页生成方法介绍
Set fout=fso.CreateTextFile(path)  
一种非常简单的静态网页生成方法介绍fout.WriteLine(
"<!--This page is created by program on "&now&" automatically-->")
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍webstr 
= getHTTPPage("http://url")
一种非常简单的静态网页生成方法介绍fout.WriteLine(webstr)
一种非常简单的静态网页生成方法介绍fout.close
一种非常简单的静态网页生成方法介绍
set fout=nothing
一种非常简单的静态网页生成方法介绍
set fso=nothing     
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍
'生成后让网页自动关闭
一种非常简单的静态网页生成方法介绍
Response.Write("<script>")
一种非常简单的静态网页生成方法介绍Response.Write(
"function ToClose(){")
一种非常简单的静态网页生成方法介绍Response.Write(
"window.opener=null;window.close();}")
一种非常简单的静态网页生成方法介绍Response.Write(
"setTimeout(ToClose,10000);")
一种非常简单的静态网页生成方法介绍Response.Write(
"</script>")
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍
'获取目标网页的源代码
一种非常简单的静态网页生成方法介绍
Function getHTTPPage(url)
一种非常简单的静态网页生成方法介绍    
dim Http
一种非常简单的静态网页生成方法介绍    
set Http=server.createobject("MSXML2.XMLHTTP")
一种非常简单的静态网页生成方法介绍    Http.open 
"GET",url,false
一种非常简单的静态网页生成方法介绍    Http.send()
一种非常简单的静态网页生成方法介绍    
if Http.readystate<>4 then 
一种非常简单的静态网页生成方法介绍        
exit function
一种非常简单的静态网页生成方法介绍    
end if
一种非常简单的静态网页生成方法介绍    getHTTPPage
=bytesToBSTR(Http.responseBody,"GB2312")
一种非常简单的静态网页生成方法介绍    
if len(Http.responseBody)<1000 then
一种非常简单的静态网页生成方法介绍        Response.End()
一种非常简单的静态网页生成方法介绍    
end if
一种非常简单的静态网页生成方法介绍    
set http=nothing
一种非常简单的静态网页生成方法介绍    
if err.number<>0 then err.Clear 
一种非常简单的静态网页生成方法介绍
End Function
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍
'字符转换,解决中文乱码问题
一种非常简单的静态网页生成方法介绍
Function BytesToBstr(body,Cset)
一种非常简单的静态网页生成方法介绍    
dim objstream
一种非常简单的静态网页生成方法介绍    
set objstream = Server.CreateObject("adodb.stream")
一种非常简单的静态网页生成方法介绍    objstream.Type 
= 1
一种非常简单的静态网页生成方法介绍    objstream.Mode 
=3
一种非常简单的静态网页生成方法介绍    objstream.Open
一种非常简单的静态网页生成方法介绍    objstream.Write body
一种非常简单的静态网页生成方法介绍    objstream.Position 
= 0
一种非常简单的静态网页生成方法介绍    objstream.Type 
= 2
一种非常简单的静态网页生成方法介绍    objstream.Charset 
= Cset
一种非常简单的静态网页生成方法介绍    BytesToBstr 
= objstream.ReadText 
一种非常简单的静态网页生成方法介绍    objstream.Close
一种非常简单的静态网页生成方法介绍    
set objstream = nothing
一种非常简单的静态网页生成方法介绍
End Function

 

      另外可以设置这段程序定时执行,先把代码写到一个ASP文件里,然后在另一网页中使用JS调用定时程序,当然还有另外一种方法,就是用windows的任务计划,这里的方法是把下面代码写入一静态页中,然后在浏览器打开此网页就可以了

<script>
function run(){
window.open(
'make_html.asp','_blank');}
setInterval(run,
5000);
</script>

 

       二、这里顺便说下在JavaScript中使用XMLHttpRequest对象获取网页代码的方法,在返回中文的时候会出现乱码

原因是:

1、xtmlhttp 返回的数据默认的字符编码是utf-8,如果客户端页面是gb2312或者其它编码就会产生乱码
2、post方法提交的数据默认字符编码也是utf-8,如果服务器端是gb2312或其他编码数据就会产生乱码

解决方法:

1、若客户端是gb2312编码,则在服务器指定输出流编码

Response.ContentType = "text/html" 
Response.Charset 
= "GB2312"

2、服务器端和客户端都使用utf-8编码

       三、还有一个常见的编码问题是URL编码解码问题,下面使用JavaScript实现asp中的UrlEncode和UrlDecode功能,这里也可以学到JavaScript如何调用VBscript的函数

<script language="vbscript"> 
Function str2asc(strstr) 
   str2asc 
= hex(asc(strstr)) 
End Function 
Function asc2str(ascasc) 
   asc2str 
= chr(ascasc) 
End Function 
</script> 

 

一种非常简单的静态网页生成方法介绍一种非常简单的静态网页生成方法介绍Code
一种非常简单的静态网页生成方法介绍<script language="javascript"> 
一种非常简单的静态网页生成方法介绍一种非常简单的静态网页生成方法介绍
function UrlEncode(str)一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍  
var ret=""
一种非常简单的静态网页生成方法介绍  
var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%"; 
一种非常简单的静态网页生成方法介绍  for(var i=0;i<str.length;i++){ 
一种非常简单的静态网页生成方法介绍   var chr = str.charAt(i); 
一种非常简单的静态网页生成方法介绍    var c=str2asc(chr); 
一种非常简单的静态网页生成方法介绍    if(parseInt("0x"+c) > 0x7f){ 
一种非常简单的静态网页生成方法介绍      ret+="%"+c.slice(0,2)+"%"+c.slice(-2); 
一种非常简单的静态网页生成方法介绍    }else{ 
一种非常简单的静态网页生成方法介绍      if(chr==" ") 
一种非常简单的静态网页生成方法介绍        ret+="+"; 
一种非常简单的静态网页生成方法介绍      else if(strSpecial.indexOf(chr)!=-1) 
一种非常简单的静态网页生成方法介绍        ret+="%"+c.toString(16); 
一种非常简单的静态网页生成方法介绍      else 
一种非常简单的静态网页生成方法介绍        ret+=chr; 
一种非常简单的静态网页生成方法介绍    } 
一种非常简单的静态网页生成方法介绍  } 
一种非常简单的静态网页生成方法介绍  return ret; 
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍function UrlDecode(str){ 
一种非常简单的静态网页生成方法介绍  var ret=""; 
一种非常简单的静态网页生成方法介绍  for(var i=0;i<str.length;i++){ 
一种非常简单的静态网页生成方法介绍   var chr = str.charAt(i); 
一种非常简单的静态网页生成方法介绍    if(chr == "+"){ 
一种非常简单的静态网页生成方法介绍      ret+=" "; 
一种非常简单的静态网页生成方法介绍    }else if(chr=="%"){ 
一种非常简单的静态网页生成方法介绍     var asc = str.substring(i+1,i+3); 
一种非常简单的静态网页生成方法介绍     if(parseInt("0x"+asc)>0x7f){ 
一种非常简单的静态网页生成方法介绍      ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6))); 
一种非常简单的静态网页生成方法介绍      i+=5; 
一种非常简单的静态网页生成方法介绍     }else{ 
一种非常简单的静态网页生成方法介绍      ret+=asc2str(parseInt("0x"+asc)); 
一种非常简单的静态网页生成方法介绍      i+=2; 
一种非常简单的静态网页生成方法介绍     } 
一种非常简单的静态网页生成方法介绍    }else{ 
一种非常简单的静态网页生成方法介绍      ret+= chr; 
一种非常简单的静态网页生成方法介绍    } 
一种非常简单的静态网页生成方法介绍  } 
一种非常简单的静态网页生成方法介绍  return ret; 
一种非常简单的静态网页生成方法介绍
一种非常简单的静态网页生成方法介绍tar_str="爱情"
一种非常简单的静态网页生成方法介绍encode_str=UrlEncode(tar_str)
一种非常简单的静态网页生成方法介绍decode_str=UrlDecode(encode_str)
一种非常简单的静态网页生成方法介绍document.write("编码后:"+encode_str+"<br>");
一种非常简单的静态网页生成方法介绍document.write("解码后:"+decode_str);
一种非常简单的静态网页生成方法介绍</script>

 

上一篇:VBscript操作DOM


下一篇:当前页居中分页效果的JS实现