您的位置:首页 > 其它

静态网页简易生成方法

2014-05-07 10:27 344 查看
目前要完成静态页面生成的主要方法有简单的模板替换、常见的ASP+FSO等,接下来介绍一种更为简单的方法,原理就是借助XMLHTTP对象获取目标页面的源代码,然后写入到静态网页文件中。

 

Dim filename,fso,fout

filename="index.html"       

 

Setfso=server.CreateObject("Scripting.FileSystemObject")

path=server.MapPath(filename)     

Set fout=fso.CreateTextFile(path) 

fout.WriteLine("<!--This page iscreated 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("functionToClose(){")

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的函数

 

<scriptlanguage="vbscript">

Function str2asc(strstr)

  str2asc = hex(asc(strstr))

End Function

Function asc2str(ascasc)

  asc2str = chr(ascasc)

End Function

</script>

 

本文为Anyforweb技术分享博客,需要了解网站建设相关,请访问anyforweb.com。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: