如何知道 iframe 内容是 html 还是 json on load 事件



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

经过一些研究,我发现了解在 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获取内容类型?最后,我们必须使用contentType来兼容Mozilla Firefox,mimeType用于IE。

最新更新