まず、Mozilla Firefox でのみ「load」イベントが発生するようにしたいだけです。
私はすでにさまざまな方法を試しましたが、私が知ったのは、ifrmae のロード イベントは、'Content-Disposition' ヘッダーが 'inline' として構成されている場合にのみ発生するということだけです。
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);
?>
よろしくお願いします。適切な解決を望みます。