2009-07-01 18 views
2

IE6がファイルをダウンロードするためにJavascriptを使用したいと思います。 Javascriptを使用してオンザフライで作成されます。このファイルはWebサーバー上に存在しません。ここで小さな例です:ダウンロードJavascriptがIE6でXMLを生成

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <script type="text/javascript"> 
function clicked() { 
    var xml = "<data>Just for testing</data>"; 
    document.open("text/xml", "replace"); 
    document.write(xml); 
} 
    </script> 
    </head> 
    <body> 
    <input type="button" value="Download" onclick="clicked();" /> 
    </body> 
</html> 

代わりにブラウザウィンドウでXMLを読み込むと、私はそれは彼らがファイルを使用せずに保存することができるようにデータをダウンロードするユーザーに促すために、それはIE6を起こしたいです - >名前を付けて保存します。何か案は?

答えて

2

あなたdocument.write()document.execCommand()を使用することができるはずです。

document.execCommand('SaveAs',true,'file.xml'); 

これは、任意の標準の一部ではないとだけIEの風味ブラウザで動作します。

+1

これはうまくいくようです。私はブラウザにもコンテンツを表示させないようにすることはできますか?戻るボタンとリフレッシュは元のページをリロードしません。 –

+0

あなたは、目に見えない、または0×0のiframeを作成し、メイン文書の代わりにその文書にxmlを書くことができます。 –

-1

いいえ、これはできません。 Webブラウザは厳密にこれを許可していません。JavaScriptを使用してファイルをディスクに保存する機能は、確認のポップアップが表示されても非常に危険です。

編集:他の回答のおかげで、IEの一部のバージョンでこの動作が可能であることがわかりました(驚くことではありません)。 IE6の場合

+0

私はそれがそれのようなものになると考えました。リンクをクリックしてサーバーから悪意のあるものをダウンロードするよりも危険なのはなぜですか? –

+1

XSS +のユーザーは恐らくクリックする必要はありません –

+0

合意すると、ブラウザが許すのはひどい動作です。しかし、IEはobject.execCommandを介してそれを許可しています - それはそれが唯一のブラウザであることにひどく驚くことではありません;) –

0

データをクライアントサイドで生成する必要がある場合は、ダウンロード可能なファイルとして返すことができるように、サーバーにポストバックすることができます。

+0

サーバーはありません。これは、イントラネット上の共有を実行しています。私はこれを行うには、Railsアプリケーションを書くのが大好きだけど、残念なことにオプションではありません。私は自分が持っているものとやらなければなりません。 –

関連する問題