0

我正在尝试使用 Javascript 将任何网页的 html 源代码放在字符串中。请告诉我是否可以做其他事情来解决我的问题。我正在使用从另一篇文章中找到的以下代码

function httpGet(theUrl)
{
var xmlHttp = null;

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}

我在 IE Firefox 和 Chrome 中试过这个,但我总是得到以下源代码,它是“PAGE NOT FOUND”页面的源代码。如果你有任何其他信息,请在评论中告诉我。我想要的是从任何网页(如 google.com 和其他网页)获取 html。如果我不能这样做,那我该怎么办?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://gmpg.org/xfn/11">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>404 - PAGE NOT FOUND</title>
            <style type="text/css">
            body{padding:0;margin:0;font-family:helvetica;}
            #container{margin:20px auto;width:868px;}
            #container #top404{background-image:url('http://74.53.143.237/images/404top.gif');background-repeat:no-repeat;width:868px;height:168px;}
            #container #mid404{background-image:url('http://74.53.143.237/images/404mid.gif');background-repeat:repeat-y;width:868px;}
            #container #mid404 #gatorbottom{position:relative;left:39px;float:left;}
            #container #mid404 #xxx{float:left;padding:40px 237px 10px;}
            #container #mid404 #content{float:left;text-align:center;width:868px;}
            #container #mid404 #content #errorcode{font-size:30px;font-weight:800;}
            #container #mid404 #content p{font-weight:800;}
            #container #mid404 #content #banner{margin:20px 0 0 ;}
            #container #mid404 #content #hostedby{font-weight:800;font-size:25px;font-style:italic;margin:20px 0 0;}
            #container #mid404 #content #coupon{color:#AB0000;font-size:22px;font-style:italic;}
            #container #mid404 #content #getstarted a{color:#AB0000;font-size:31px;font-style:italic;font-weight:800;}
            #container #mid404 #content #getstarted {margin:0 0 35px;}
            #container #bottom404{background-image:url('http://74.53.143.237/images/404bottom.gif');background-repeat:no-repeat;width:868px;height:14px;}
            </style>
</head>
<body>
<div id="container">
    <div id="top404"></div>
    <div id="mid404">

            <div id="gatorbottom"><img src="http://74.53.143.237/images/gatorbottom.png" alt="" /></div>
            <div id="xxx"><img src="http://74.53.143.237/images/x.png" alt="" /></div>
    <div id="content">
            <div id="errorcode">ERROR 404 - PAGE NOT FOUND</div>
            <p>Oops! Looks like the page you're looking for was moved or never existed.<br />Make sure you typed the correct URL or followed a valid link.</p>

            <div id="banner">

                    <object width="728" height="90"><param name="movie" value="http://74.53.143.237/images/hg728x90.swf">

                            <embed src="http://74.53.143.237/images/hg728x90.swf?clickTAG=http://secure.hostgator.com/cgi-bin/affiliates/clickthru.cgi?id=page404" width="728" height="90"></embed>
                    </object>
            </div>

            <div id="hostedby">This site is hosted by HostGator!</div>
            <div id="coupon">Build your website today for 1 cent!   Coupon code: "404PAGE"</div>

            <div id="getstarted"><a href="http://www.hostgator.com/?utm_source=internal&utm_medium=link&utm_campaign=page404" title="HostGator Web Hosting" >CLICK HERE TO GET STARTED</a></div>

    </div>

    <div style="clear:left;"></div>
    </div>
    <div id="bottom404"></div>
</div>

</body>

</html>
4

1 回答 1

3

我正在尝试使用 Javascript 将任何网页的 html 源代码放在字符串中

如果“任何”是指来自提供文档的来源以外的来源的页面,则不能通过在浏览器中运行的JavaScript 执行此操作,因为您使用的是 ajax 调用,并且这些调用受相同来源政策的限制,它表示(例如)在文档中运行的脚本http://stackoverflow.com不能使用 ajax 从http://example.com. (“起源”不仅仅是域名,它有几个方面,详见链接)。

您可能请求的某些页面(但可能很少)可能支持Cross-Origin Resource Sharing,在这种情况下,如果它们允许您的来源(可能通过允许所有来源),您可以使用 ajax 来加载它们的内容。

如果您在浏览器之外运行 JavaScript (NodeJS、SilkJS、RingoJS、Rhino、Windows Scripting Host 等),那么 SOP 将不适用,但我怀疑您可能需要使用XMLHttpRequest对象以外的其他东西来做。

但从根本上说,在浏览器的网页(不是扩展程序/附加组件)中,您不能这样做。

...但我总是得到...“页面未找到”页面的源代码

但这听起来URL 是错误的。

于 2013-04-13T16:15:54.980 回答