首先,我只想在 Mozilla Firefox 中触发“加载”事件。
我已经尝试过不同的方法,但我所知道的是,ifrmae 的加载事件只会在“Content-Disposition”标头配置为“内联”时触发。
是否有任何其他事件让我知道弹出 iframe 对话框并要求用户保存文件?
请查看我的以下实现并帮助我获得正确的解决方案。
HTML 代码:
<html>
<head>
<script type="text/javascript" src="FileName.js"></script>
</head>
<body>
<input type = "button" value="Download" onclick = "javascript:downloadFile('http://localhost/data.php');"></input>
</body>
</html>
Javascript代码:
var downloadFile = function(url) {
// create hidden iframe
var id = "xyz";
var frame = document.createElement('iframe');
frame.id = id;
frame.name = id;
frame.style="visibility:hidden;display:none";
document.body.appendChild(frame);
var callback = function() {
alert('completed');
};
frame.onload = callback;
frame.src = url;
};
PHP代码:
// Set Content Disposition header
header('Content-Disposition: attachment; filename=some.txt');
// Set content type header
header('Content-Type: application/octet-stream');
$file = "some.txt";
if(!file_exists($file)) die("I'm sorry, the file doesn't seem to exist.");
header('Pragma: no-cache');
header('Expires: 0');
readfile($file);
?>
提前谢谢你。希望有合适的解决方案。