当前位置:  开发笔记 > 编程语言 > 正文

在不离开页面的情况下打开下载窗口的最简单方法

如何解决《在不离开页面的情况下打开下载窗口的最简单方法》经验,为你挑选了8个好方法。

什么是最好的跨浏览器方式来打开下载对话框(假设我们可以设置内容处置:标题中的附件)而无需导航离开当前页面,或打开弹出窗口,这在IE6中无法正常工作.



1> mozgras..:

这个javascript很好,它不会打开一个新窗口或选项卡.

window.location.assign(url);


这与window.location = url相同; "每当为位置对象分配新值时,将使用URL加载文档,就像使用修改后的URL调用window.location.assign()" - https://developer.mozilla.org/en-美国/文档/网络/ API/window.location的
这会导致WebSocket连接断开连接.
我使用了相同的解决方案,但它在同一个选项卡中打开文件,而不是打开下载对话框.
当使用IE11时,我发现这导致JS停止.因此,对于IE 11,我使用了window.open(url,'_ blank'),它确实打开了另一个选项卡,但是当它解决文件时该选项卡是关闭的.这使JS保持运行.
如果url用于下载页面,则与window.open(url,'_ self')相同.

2> 0x000f..:

7年过去了,好的.我不知道它是否适用于IE6,但这会在FF和Chrome中提示OpenFileDialog.

var file_path = 'host/path/file.ext';
var a = document.createElement('A');
a.href = file_path;
a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);


这不再起作用了https://developers.google.com/web/updates/2018/02/chrome-65-deprecations
@Manoj Rana-我检查了FF 58.0.2(64位)是否正常工作。如果删除两行_document.body.appendChild(a); _ _document.body.removeChild(a); _
@ user1933131 chrome仅针对跨域删除

3> jao..:

我总是在下载链接中添加一个target ="_ blank".这将打开一个新窗口,但只要用户单击"保存",新窗口就会关闭.


这是最好的答案.在Internet Explorer中,将"target ="_ blank"'添加到要下载的链接将阻止浏览器导航(打印"HTML1300:Navigation occurred"),从而使页面处于不一致状态.

4> George Clagh..:

将其放在HTML头部分中,将urlvar 设置为要下载的文件的URL:


然后把它放在体内,这将在5秒后自动开始下载:

 

(从这里开始.)


这不起作用,因为在IE6中,如果用户点击"保存",文件将被保存,但弹出窗口保持打开状态.这是不可接受的.

5> alockwood05..:

正如这个问题所暗示的那样,我一直在寻找一种使用javascript来启动文件下载的好方法.然而,这些答案没有帮助.然后我做了一些xbrowser测试,发现iframe在IE> 8的所有现代浏览器上效果最好.

downloadUrl = "http://example.com/download/file.zip";
var downloadFrame = document.createElement("iframe"); 
downloadFrame.setAttribute('src',downloadUrl);
downloadFrame.setAttribute('class',"screenReaderText"); 
document.body.appendChild(downloadFrame); 

class="screenReaderText" 是我的类来设置存在但不可见的内容.

CSS:

.screenReaderText { 
  border: 0; 
  clip: rect(0 0 0 0); 
  height: 1px; 
  margin: -1px; 
  overflow: hidden; 
  padding: 0; 
  position: absolute; 
  width: 1px; 
}

与html5boilerplate中的.visuallyHidden相同

我更喜欢这个javascript window.open方法,因为如果链接被破坏,iframe方法根本不做任何事情,而不是重定向到空白页面说文件无法打开.

window.open(downloadUrl, 'download_window', 'toolbar=0,location=no,directories=0,status=0,scrollbars=0,resizeable=0,);
window.focus();



6> cнŝdk..:

我知道问题已被问到,7 years and 9 months ago但许多发布的解决方案似乎不起作用,例如

Java脚本

function downloadButtonClicked() {
    // Simulate a link click
    var url = 'your_download_url_here';
    var elem = document.createElement('a');
    elem.href = url;
    elem.target = 'hiddenIframe';
    elem.click();
}

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有