如何通过js或者jquery载入其他网站的网页(DOM)?

JavaScript038

如何通过js或者jquery载入其他网站的网页(DOM)?,第1张

给你个实例,就是通过发送访问请求,而获得请求返回的数据。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-type" content="text/html charset=utf-8">

<title>远程网页源代码读取</title>

<style type="text/css">

/* 页面字体样式 */

body, td, input, textarea {

    font-family:Arial

    font-size:12px

}

</style>

<script type="text/javascript">

//用于创建XMLHttpRequest对象

function createXmlHttp() {

    //根据window.XMLHttpRequest对象是否存在使用不同的创建方式

    if (window.XMLHttpRequest) {

       xmlHttp = new XMLHttpRequest()                  //FireFox、Opera等浏览器支持的创建方式

    } else {

       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")//IE浏览器支持的创建方式

    }

}

//直接通过XMLHttpRequest对象获取远程网页源代码

function getSource() {

    var url = document.getElementById("url").value             //获取目标地址信息

    //地址为空时提示用户输入

    if (url == "") {

        alert("请输入网页地址。")

        return

    }

    document.getElementById("source").value = "正在加载……"   //提示正在加载

    createXmlHttp()                                            //创建XMLHttpRequest对象

    xmlHttp.onreadystatechange = writeSource                   //设置回调函数

    xmlHttp.open("GET", url, true)

    xmlHttp.send(null)

}

//将远程网页源代码写入页面文字区域

function writeSource() {

    if (xmlHttp.readyState == 4) {

        document.getElementById("source").value = xmlHttp.responseText

    }

}

</script>

</head>

<body>

<h1>远程网页源代码读取</h1>

<div>

    地址:<input type="text" id="url">

    <input type="button" onclick="getSource()" value="获取源码">

</div>

<textarea rows="10" cols="80" id="source"></textarea>

</body>

</html>

比如说,现在有一个外部的html文件test.html,内容是:

<input type="button" value="外部文件按钮" />

<p>外部文件p标签</p>

现在在这个网页中加载test.html中的内容,这个网页的源码为:

<html>

<head>

    <meta http-equiv="Content-Type" content="text/html charset=utf-8" />

    <title></title>

    <script src="../Scripts/jquery-1.8.2.min.js"></script>

    <script type="text/javascript">

        function GetHtml() {

            $.ajax({

                type: "POST",

                url: 'Handler.ashx',      //提交到一般处理程序请求数据     

                success: LoadHtml

            })

        }

        function LoadHtml(data) {

            var div = document.getElementById("out")

            div.innerHTML = data//注意这里,要是想展示test.heml中的内容就用这个,如果显示源代码则用innerText

        }

    </script>

</head>

<body>

    <input type="button" value="加载外部Html文件内容" onclick="GetHtml()" />

    <div id="out">

    </div>

</body>

</html>

上面脚本中写的Handler.ashx是一个一般处理程序,代码是这样的:

public void ProcessRequest(HttpContext context)

{

    context.Response.ContentType = "text/plain"

    string html = GetOutsideContent("test.html")

    context.Response.Write(html)

}

public static string GetOutsideContent(string Path)

{

    try

    {

        StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath(Path), System.Text.Encoding.GetEncoding("utf-8"))

        string content = sr.ReadToEnd().ToString()

        sr.Close()

        return content

     }

     catch

     {

         return "错误"

     }

}

public bool IsReusable

{

    get

    {

        return false

    }

}

这是asp.net下的,如果你是使用其他语言的都大同小异,从后台读取文件中的内容,使用Ajax获取后台传递的文件中的内容,思路就是这样。