javascript下载链接如何工作?

时间:2011-02-01 15:02:33

标签: javascript html download

我一直在使用Microsoft Technet网站,您可以通过单击页面上的链接下载ISO文件。元素是这样的:

<a href="javascript:void(0)" onmouseout="HideToolTip()"
    onmouseover="ShowToolTip(event,'Click here to download.')"
    onclick="javascript:RunDownload('39010^313^164',event)"
    class="detailsLink">Download</a>

我无法在脚本中找到RunDownload()方法。我想知道它可能做什么。我的意思是通常当我提供一个供人下载的链接时我会提供一个锚点:

<a href="www.foo.com/mymp3.mp3">download</a>

但这与脚本的作用有何不同?因为即使我跑'Fiddler',我也无法看到实际的下载位置。

3 个答案:

答案 0 :(得分:8)

没有“javascript下载”链接。 Javascript可以打开一个新窗口,或模拟链接上的点击。

您必须找到的是此点击触发的功能将导致的网址。

这是一个如何做的例子:

假设我们有:

<a id="download">download Here §§§</a>

那么这个jQuery代码:

$('#download').click( function() {
    window.location.href = 'http://example.org/download/ISO.ISO';
} );

将重定向到网址http://example.org/download/ISO.ISO。此URL是否开始下载取决于HTTP标头和浏览器,而不是javascript所做的。

答案 1 :(得分:2)

下载位置可以是网址重写的路径。这意味着可能有一些参数是通过HTTP Post提供的,并且Web服务器或Web应用程序中的某些HTTP处理程序可能从HTTP请求获取一些参数并将文件字节写入HTTP响应,这绝对隐藏了文件位于实际服务器的文件系统。

也许这就是幕后的情况,并阻止您知道文件位置。

例如,我们可以这样: http://mypage.com/downloads/1223893893

你请求像“whatever.exe”这样的可执行文件将它下载到你的硬盘上。哪个是“http:/mypage.com/downloads/whatever.exe”?实际上,它不存在。它是一个保存在某个记录中的长数据库中的字节数组,“mypage”Web应用程序处理对标识为“1223893893”的文件的请求,该文件可以是标识符,日期时间或任何参数的组合。

答案 2 :(得分:0)

我认为 RunDownload 的功能可能是它可能会通过服务器的get请求通知服务器另一个下载即将发生,或者它可能需要通过设置来运行下载后台目标属性为iframe,因此用户无需打开另一个标签页并在同一页面上下载文件。

<a href="file.mp3" onclick="runDownload();">Download</a>

JS

var runDownload=function(){
    e.preventDefault();
    increaseDownloadCountOnTheServer(location);
    window.location.href="filelocation.exe";
}