2009-07-01 88 views
2

我想用Javascript來使IE6下載一個文件。它將使用Javascript即時創建。該文件在Web服務器上不存在。這裏有一個小例子:下載Javascript生成的XML在IE6中

<!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

對於IE6,你應該能夠你document.write()後使用document.execCommand()

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

這不是任何標準的一部分,將只能在IE瀏覽器中的風味工作。

-1

不,這是不可能的。一個Web瀏覽器嚴格禁止這種做法,因爲只能通過JavaScript將文件保存到磁盤的功能會非常危險,即使彈出確認窗口。

編輯:感謝其他答案,我發現(不奇怪),這種行爲是可能的一些版本的IE瀏覽器。

+0

我覺得它會是這樣的。是什麼讓它比點擊鏈接並從服務器下載惡意內容更危險? – 2009-07-01 03:55:26

+1

XSS +用戶不需要點擊可能 – 2009-07-01 03:58:03

+0

同意,瀏覽器允許這是一個可怕的行爲。然而,IE確實允許通過object.execCommand - 我並不驚訝它是唯一的瀏覽器;) – 2009-07-01 04:04:20

0

如果您的數據必須生成客戶端,那麼您可以將其發回服務器,以便它可以作爲可下載文件返回。