2011-06-06 75 views
0

我在iframe中遇到了麻煩。我試圖動態創建iframe,並根據用戶選擇將其src屬性分配給適當的文件。我使用內嵌JavaScript創建了一個簡單的html頁面,它重現了這個問題。IE iframe和unicode文本

<html> 
    <head> 
    <script type="text/javascript"> 
     function createIFrame(){ 
     var iframe = document.createElement('iframe'); 
     document.body.appendChild(iframe); 
     iframe.id = "myframe"; 
     } 

     function loadFile(fileName){ 
     var frame = document.getElementById("myframe"); 
     frame.src = fileName; 
     } 
    </script> 
    </head> 
    <body> 
    <input type="button" value="create iframe" onclick="createIFrame()" /> 
    <input type="button" value="load ansi" onclick="loadFile('ansi.txt')" /> 
    <input type="button" value="load unicode" onclick="loadFile('unic.txt')" /> 
    <hr/> 
    <iframe id="workingFrame" src="unic.txt"></iframe> 
    </body> 
</html> 

ansi.txt - 以ANSI編碼保存的文本文件,unic.txt是unicode文本文件。

按下創建按鈕iframe被添加到DOM。如果按下「加載ansi」按鈕,文件內容將無任何問題加載到iframe中,但「加載unicode」按鈕會導致問題 - iframe保持空白。

但是,如果src屬性最初定義爲'workingFrame',則unicode文件加載正確。這個問題發生在IE 8中,IE 9建議下載文件而不是渲染它。我需要在iframe中呈現文件內容。

回答

0

我試過你的例子在ie 8和9,它的工作完美。你有沒有嘗試過你自己的示例HTML頁面,或只是你的實際代碼?

PS - 抱歉張貼這作爲一個答案,我沒有評論privledges尚未

+0

謝謝您的回覆。是的,我已經在幾臺PC上運行Windows 7的IIS 7下自己嘗試過了。問題是可重現的。我用Windows記事本創建了文本文件,改變了它的編碼保存選項。 – 2011-06-06 18:39:33

+0

好吧,我得到它在ie9&8中重現錯誤,我錯過了用記事本編碼文件的部分。 – AsherMaximum 2011-06-06 21:05:44

+0

儘管如此,在ie9中,即使在最初定義的iframe中也不會加載它。通過將文件擴展名更改爲.html,我確實可以在ie9和8中使用它。我猜這對你來說可能不是一個可行的選擇。 – AsherMaximum 2011-06-06 21:07:23

0

是您的服務器上的此響應發送什麼MIME類型? Content-Type HTTP頭指定了什麼CHARSET?

如果你發送text/html而不是text/plain,我敢打賭這個工作沒有錯誤。

+0

是的,你是對的。將內容類型標題更改爲「text/html」解決了一個問題,但產生了另一個問題 - 文本格式丟失。 – 2011-06-07 07:29:02

+0

不幸的是,這種問題解決方案不適用於我,因爲我沒有訪問生產服務器的問題,應該在客戶端部分解決問題。關於這個問題 - 我注意到IE將文件內容加載到iframe,它可以通過iframe.contentWindow.document.body.innerHTML訪問,但不會顯示。並且iframe.readyState屬性不會轉爲「完整」,它始終對於unicode文件是「交互式」的。 – 2011-06-07 07:50:27