如何使用javascript下载网页

如何使用javascript下载网页,javascript,Javascript,可能重复: 我想用javascript下载一个文件并对其进行解析。我需要一个类似php的file\u get\u contents()的函数。我找过了,但什么也没找到 更新:感谢您提供的解决方案,但我忘了写AJAX不适合这个问题,因为我无法访问远程地址,并且存在跨域请求问题。我也不能设置任何php代理,因为我的主机阻止了对fopen的访问。我更喜欢纯javascript解决方案 PS:对不起,这个问题实际上是重复的(我不知道),提供的解决方案非常适合这个问题。看一看。它从web异步下载文件 如

可能重复:

我想用javascript下载一个文件并对其进行解析。我需要一个类似php的
file\u get\u contents()
的函数。我找过了,但什么也没找到

更新:感谢您提供的解决方案,但我忘了写AJAX不适合这个问题,因为我无法访问远程地址,并且存在跨域请求问题。我也不能设置任何php代理,因为我的主机阻止了对fopen的访问。我更喜欢纯javascript解决方案

PS:对不起,这个问题实际上是重复的(我不知道),提供的解决方案非常适合这个问题。

看一看。它从web异步下载文件


如果您计划使用
jquery
,请看一看.ajax(),它包装了XMLHttpRequest。

简短的问题,简短的回答:您可能想玩一些ajax。通过调用本地php脚本生成
文件\u get\u contents()
并将其返回页面,或者直接调用外部URL。但您的浏览器可能不允许您这样做

添加: 您更新了您的问题,表示您更喜欢纯javascript解决方案。我不认为你能,因为你试图去拿一些不属于你的东西。 另外,你说你的主机阻塞了
fopen()
,我曾经在一个主机上,他们也这样做过。我惊讶地发现他们没有阻止,以下是我的解决方法:

$server = "www.example.com";
$path = "/path/index.html";
$type = "HTTP/1.1";

$fp = fsockopen($server, 80, $errno, $errstr, 30);
if (!$fp) echo "$errstr ($errno)<br />\n";
else {
    $out  = "GET $path $type\r\n";
    $out .= "Host: $server\r\n";
    $out .= "User-Agent: Mozilla 4.0\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    $contents = "";
    while (!feof($fp)) $contents .= fgets($fp, 128);
    fclose($fp);
    echo $contents;
}
$server=“www.example.com”;
$path=“/path/index.html”;
$type=“HTTP/1.1”;
$fp=fsockopen($server,80,$errno,$errstr,30);
如果(!$fp)回显“$errstr($errno)
\n”; 否则{ $out=“获取$path$type\r\n”; $out.=“主机:$server\r\n”; $out.=“用户代理:Mozilla 4.0\r\n”; $out.=“连接:关闭\r\n\r\n”; fwrite($fp,$out); $contents=“”; 而(!feof($fp))$contents.=fgets($fp,128); fclose($fp); echo$内容; }

我知道您不想要PHP代理解决方案,我想您可能别无选择。试试看,对我很有用。如果您的主机也阻止了
fsockopen()
,您可能运气不好。

查看XMLHttp请求

或者JQuery的load、$.get、$.post和$.ajax方法

var request = new XMLHttpRequest(); 
request.open("GET", 'http://www.url.com');
request.onreadystatechange = function() { 
if (request.readyState === 4 && request.status === 200) {

//response handling code

}
};
request.send(null); // Send the request now
Iframe: 在页面上放置一个不可见的iframe

<iframe id="frame1" style="display:none"></iframe>
这将触发从浏览器下载

另一种方法是只需导航到下载url,浏览器就会发现MIME类型无法显示,并显示一个下载对话框。使用

window.location.href = "/location/file";

您想下载文件还是网页?一个网页是一组多个文件。另外,您希望代码位于什么上下文中。浏览器插件、网页脚本或服务器端javascript?好的旧XMLHttpRequest发生了什么事?@Caimen:我想下载一个HTML文件。也就是说,它只是一个文件,因为我只需要解析它,不需要样式等等。两件事:是的,但我认为初学者不会阅读文档。我对你一无所知。但是学校让我开始了。见鬼,我要去文档链接,谢谢。初学者绝对应该阅读文档。我17岁时就用php尝试过,它看起来都像法语。那是因为;)<代码>如果是HTML文件怎么办?
window.location.href = "/location/file";