我目前正在使用以下JS代码触发文件下载,而不会离开我正在访问的页面:
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.src = "/somefile.zip";
除了Android浏览器和Dolphin之外,它在我测试的任何地方都能很好地工作,其中下载根本没有开始。到目前为止一直很好,经过一些研究后,这个隐藏的iframe技巧恰好被认为不适用于Android浏览器。
但我尝试了其他几种方法来触发Android浏览器上的下载,包括window.open()
(不可靠,因为默认情况下启用了弹出窗口阻止功能),或<a target="_blank">
带有模拟click()
(从弹出窗口拦截器的角度来看,它会被window.open()
阻止),或document.location = ...
下载文件但会破坏我的应用。
后者document.location = ...
的问题是这是一个Comet应用程序(服务器推/长轮询)所以我真的不能离开我当前正在使用的页面(并且“离开”包括更改{ {1}}即使是文件下载,即使显然浏览器停留在当前页面),否则长轮询连接会停止并且更新停止,应用程序会中断。当手动或模拟点击普通链接时,这显然也适用。
所以为了不破坏我的应用程序,我真的需要触发文件下载没有离开我正在打开的页面。不幸的是,我没有找到任何适用于Android浏览器的可行解决方案。
有什么想法吗?
感谢您阅读。
答案 0 :(得分:0)
尝试使用锚点和模拟点击而不使用target = blank
我说这是因为我有一个类似的下载,包含iframe和一个简单的链接作为后备。除了android之外,iframe可以处理所有内容,但是简单的链接会在不离开页面的情况下成功下载。