正在下载文件,同时加载另一个页面
Downloading a file while loading another page
上下文如下:
- 用户点击按钮
- 页面上的新信息会刷新页面(echo用于打印html代码)
- 创建一个file.txt
- 创建的文件的下载应自动开始
使用下面的代码,将创建文件并显示页面的剩余部分,但不会开始下载。此外,如果我点击链接,下载不会开始,但txt文件会在浏览器中打开(而我想强制下载)。
另一方面,如果我对javascript进行注释并取消对头部指令的注释,我会刷新正确的页面并下载txt文件,但该文件的内容是错误的(它包含页面其余部分中的html代码)。
===============不工作代码===============
echo "
<form name='"fn'" action='"index.php?option=com_comp'" method='"post'">
// more not related stuff
<input type='"image'" src='"".JURI::root().
"components/com_comp/images/download_icon.png'" .
"'" name='"downloadaddresses'">DOWNLOAD_RESULTS
// more not related stuff";
if($_POST['downloadaddresses_x']!=0) {
$myfilename = "tmp/results.txt";
$fh = fopen($myfilename, 'w');
$recipients = $_POST['recipients'];
$semicolon_separated = implode(";", $recipients);
fwrite($fh, $semicolon_separated);
fclose($fh);
/*header('Content-disposition: attachment; filename='.$myfilename);
header("Content-type: application/octet-stream");*/
echo "<a href='"".$myfilename."'" id='"downloadlink'">
This download should start automatically!</a>";
echo "<script type='"text/javascript'">
newwindow=function{
window.open('".$myfilename."','name','height=400,width=200');
if (window.focus) {newwindow.focus()}}
</script>";
}
==============================更多不起作用的代码=============
<script type="text/javascipt">
var el = document.getElementById('downloadlink');
if (document.createEvent) {
var event = document.createEvent('"MouseEvents'");
event.initEvent('"click'", true, true);
el.dispatchEvent(event);
}
else if (el.click) {
el.click();
}
</script>
代替此click
模拟代码:
<script type="text/javascipt">
var el = document.getElementById('downloadlink');
if (document.createEvent) {
var event = document.createEvent('"MouseEvents'");
event.initEvent('"click'", true, true);
el.dispatchEvent(event);
}
else if (el.click) {
el.click();
}
</script>
你能用这个吗:
<script type="text/javascript">
location.href = document.getElementById('downloadlink').getAttribute('href');
</script>
相关文章:
- HTML外部javascript加载另一个javascript
- 正在下载文件,同时加载另一个页面
- .replaceWith 无法使用 .click 函数加载另一个值
- 如何打开弹出窗口并重新加载另一个页面
- 收到事件时加载另一个.html页面
- jQuery-检查外部页面上是否存在DIV,如果存在,则加载DIV,否则加载另一个
- 在简单模式中,取消单击时不会调用onClose事件..当我在simple-modal上加载另一个jquery对话框时
- Android WebView:在javascript中,有没有一种方法可以加载另一个javascript文件,并为堆栈
- 我的按钮中的函数不会重新加载另一个函数
- 使用隐藏字段 ID 选择器加载另一个字段中的文本
- Javascript 来加载另一个 js 文件
- 加载另一个相同页面时,使用新数据激活第一个网页
- 无法从 OpenLayers 3 站点使用 WFS 示例作为基础加载另一个 WFS
- 滑动切换时加载另一个页面
- 限制元素,当我单击更多以加载另一个元素时
- 加载和定位图像,当加载另一个图像时
- 如何使用 JS 加载另一个 html 文件
- 单击CSS框加载另一个网页.CSS 或 js
- 加载另一个页面's的HTML,并使用jQuery通过选择器对其进行解析
- 加载另一个页面's DIV,与之互动?可能的(jQuery)