我在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中呈现文件内容。
谢谢您的回复。是的,我已经在几台PC上运行Windows 7的IIS 7下自己尝试过了。问题是可重现的。我用Windows记事本创建了文本文件,改变了它的编码保存选项。 – 2011-06-06 18:39:33
好吧,我得到它在ie9&8中重现错误,我错过了用记事本编码文件的部分。 – AsherMaximum 2011-06-06 21:05:44
尽管如此,在ie9中,即使在最初定义的iframe中也不会加载它。通过将文件扩展名更改为.html,我确实可以在ie9和8中使用它。我猜这对你来说可能不是一个可行的选择。 – AsherMaximum 2011-06-06 21:07:23