0

如果我在页面中添加一个 iframe 并制作 src="temp.txt" 我怎样才能让浏览器将其解释为 HTML 而不是只显示“temp.txt”的内容?

4

2 回答 2

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');

然后将文件读入浏览器。

于 2013-10-31T02:14:03.070 回答
0

或者,如果您不想/拥有访问权限/权限来操作 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 标签解析。

于 2013-10-31T02:50:21.977 回答