如果我在页面中添加一个 iframe 并制作 src="temp.txt" 我怎样才能让浏览器将其解释为 HTML 而不是只显示“temp.txt”的内容?
2 回答
浏览器从 Web 服务器告诉浏览器的文件中了解文件的 MIME 类型。通常,Web 服务器配置为使 .txt 文件是纯文本文件,并且浏览器不应尝试解释文件中的任何标记。
您想要的是让浏览器获得“text/html”的 mime 类型。三种方法可以做到这一点;
1)将文件名设置为temp.htm,这是最简单的
2) 更改网络服务器,使 txt 文件现在是 html 文件。例如,在 apache 中,您可以在 httpd.conf 中添加一行,看起来像
AddType text/html .txt
并删除看起来像的线
AddType text/plain .txt
我不推荐这条路,因为这是一个全球性的变化。您也可以尝试将其添加到代码所在目录中的 .htaccess 文件中。
3) 使用 PHP 等动态语言在传输中设置文件的 mime 类型。例如在 PHP 中:
header('Content-type: text/html');
然后将文件读入浏览器。
或者,如果您不想/拥有访问权限/权限来操作 Apache 文件,并且您的.txt
文件位于页面所在的同一域中,您可以访问<iframe>
's.textContent
并用它替换<body>
's .innerHTML
:
说你有一个<iframe>
in <body>
:
<iframe id="frame01" src="afile.txt" width="550" height="400"></iframe>
,
并说您afile.txt
在同一目录中有文件:
<p>HTTP/1.1 200 OK</p>
<p>Date: Sat, 13 Apr 2013 16:46:15 GMT</p>
<p>Server: Apache</p>
<p>Last-Modified: Fri, 08 Mar 2013 12:57:30 GMT</p>
<p>Accept-Ranges: bytes</p>
<p>Content-Length: 216469</p>
<p>Connection: close</p>
<p>Content-Type: image/jpeg</p>
您可以通过运行以下命令替换页面内容:
//
window.onload =
function () {
var frame = document.getElementById("frame01");
document.body.innerHTML =
frame.contentWindow.document.body.textContent;
};
//
//
和输出页面看起来像:
HTTP/1.1 200 正常
日期:2013 年 4 月 13 日星期六 16:46:15 GMT
服务器:阿帕奇
最后修改时间:格林威治标准时间 2013 年 3 月 8 日星期五 12:57:30
接受范围:字节
内容长度:216469
连接:关闭
内容类型:图片/jpeg
用 htm 标签解析。