【发布时间】:2011-06-06 17:50:47
【问题描述】:
我在 IE 中使用 iframe 时遇到问题。我正在尝试动态创建 iframe 并根据用户选择将其 src 属性分配给适当的文件。我创建了一个简单的 html 页面,其中包含重现问题的内联 javascript。
<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 中呈现文件内容。
【问题讨论】:
-
我在 ie 8 和 9 中尝试了您的示例,并且效果很好。您是否尝试过您自己的示例 html 页面,或者只是您的实际代码? PS - 很抱歉将此作为答案发布,我还没有评论权限
-
感谢您的回复。是的,我自己在多台 PC 上的 Windows 7 上运行的 IIS 7 下进行了尝试。问题是可重现的。我使用 Windows 记事本创建了文本文件,更改了其编码保存选项。
-
好的,我得到它来重现ie9和8中的错误,我错过了使用记事本编码文件的部分。
-
对我来说,在 ie9 中即使在最初定义的 iframe 中也不会加载它。通过将文件扩展名更改为 .html,我确实让它在 ie9 和 8 中都能正常工作。我猜这对你来说可能不是一个可行的选择。
-
@EricLaw 是对的;将
AddType 'text/html;' txt添加到您的.htaccess文件中,它对我有用。
标签: javascript unicode iframe internet-explorer-8 src