8

我有一个绑定到 iframe 的加载事件的事件处理函数,我想知道在 iframe 中检索到的内容是 HTML 还是 JSON。有没有办法做到这一点?

4

1 回答 1

8

经过一番研究,我发现知道 iframe 中加载了哪种内容的最可行方法是通过文档 DOM 元素的contentType / mimeType属性。我们可以通过不同的方式获得这个属性:

在负载处理函数内部(方式 1):

var iframedocument = $(this).contents().get(0);
var contentType = iframedocument.contentType || iframedocument.mimeType;

在负载处理函数内部(方式 2):

var iframedocument  = this.contentDocument;
var contentType = iframedocument.contentType || iframedocument.mimeType;

在负载处理函数内部或外部(方式 3):

var iframe = document.getElementById('iframe_id');
var iframedocument  = iframe.contentDocument;
var contentType = iframedocument.contentType || iframedocument.mimeType;

如果contentType == 'application/json'那么加载的文档是JSON。如果contentType == 'text/html'那么文档是 HTML。

附加说明:这个想法来自 Geoff Wartz 对这个问题的回答:如何使用 jquery 监听返回的 json 对象该解决方案基于对另一个问题的建议答案:如何从 iframe 获取内容类型?. 最后,我们必须使用contentTypeMozilla Firefox 兼容性和mimeTypeIE。

于 2012-09-20T19:56:38.733 回答