本示例所需基础知识:
XMLHttpRequest对象
readyState的五种状态详解
本示例通过输入一个网址,然后使用ajax请求该网址,得到所请求的整个网页代码,最后把代码写到 textarea 当中 和 div 中进行预览:
xhtml代码
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title> new document </title>
- <meta name="generator" content="editplus" />
- <meta name="author" content="www.javawind.net" />
- <meta name="keywords" content="javawind" />
- <meta name="description" content="javawind" />
- </head>
-
- <body>
- <script type="text/javascript">
- <!--
- // 根据ID找元素对象
- var $=function(id){
- return document.getElementById(id);
- }
-
- // 把当前页面的基地址设置为请求的URL,以正常显示图片,但是CSS不能正常
- function setBase(url){
- var base = document.createElement("base");
- base.href = url;
- var head = document.getElementsByTagName("head")[0];
- head.appendChild(base);
- }
-
- function getHtml(url){
- setBase(url); //可省略
-
- var xmlhttp;
- // 尝试创建可用的 XMLHTTP 对象,因为每个浏览器的对象都不一样
- try{
- xmlhttp= new ActiveXObject("Msxml2.XMLHTTP");
- }catch(e){
- try{
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- }catch(e){
- try{
- xmlhttp= new XMLHttpRequest();
- }catch(e){}
- }
- }
-
- // 当 xmlhttp 对象状态变化时 触发该方法
- xmlhttp.onreadystatechange=function(){
- if(xmlhttp.readyState==4){
- if(xmlhttp.status==200){
- // xmlhttp.responseText 为请求返回的数据
- $("html").value = xmlhttp.responseText;
- $("view").innerHTML = xmlhttp.responseText;
- }else{
- alert("请求错误");
- }
- }
- }
-
- // 发送请求
- xmlhttp.open("GET",url, true);
- xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
- xmlhttp.send(null);
- }
- //-->
- </script>
- <input type="text" name="url" id="url" size="30" value="http://www.javawind.net" />
- <input type="button" value="Load it" onclick="getHtml($('url').value);" />
- <br />
- <textarea name="html" id="html" rows="10" cols="100">html代码区域</textarea>
-
- <br /><br />
- 页面预览:
- <div id="view" style="border:1px solid #FF9900">预览区域</div>
- </body>
- </html>