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

Jquery 如何知道iframe内容是html还是json-on-load事件,jquery,json,Jquery,Json,我有一个绑定到iframe的load事件的事件处理函数,我想知道在iframe中检索到的内容是HTML还是JSON。有什么方法可以实现这一点吗?经过一些研究,我发现最可行的方法是通过文档DOM元素的/properties来知道iframe中加载了哪种内容。我们可以通过不同的方式获得此属性: 在load handler函数内部(方式1): 在load handler函数内部(方式2): 加载处理程序功能内部或外部(方式3): 如果contentType=='application/json',则加

我有一个绑定到iframe的load事件的事件处理函数,我想知道在iframe中检索到的内容是HTML还是JSON。有什么方法可以实现这一点吗?

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

在load handler函数内部(方式1):

在load handler函数内部(方式2):

加载处理程序功能内部或外部(方式3):

如果
contentType=='application/json'
,则加载文档。如果
contentType==“text/html”
则文档为html


补充说明:这个想法来自Geoff Wartz对这个问题的回答:解决方案是基于对另一个问题的建议答案:。最后,对于Mozilla Firefox兼容性,我们必须使用
contentType
,对于IE,我们必须使用
mimeType

我认为,无论内容是什么,它都将显示为HTML,并将被解析为HTML。您必须获取body标记的内容并检查它是否以JSON字符
{
开头[
。但是,在某些情况下,正文中的内容可能会被包装在标签中,具体取决于内容类型和使用的浏览器。JSON也可以是布尔值、数字、null或字符串。也可以忽略外部空白。尚未在IE上测试,很难。我在某个地方读到contentType字符串可能不同租用IE。我会检查并让您知道。请评论此答案是否正确,以便标记为已接受、更正或处置。
var iframedocument = $(this).contents().get(0);
var contentType = iframedocument.contentType || iframedocument.mimeType;
var iframedocument  = this.contentDocument;
var contentType = iframedocument.contentType || iframedocument.mimeType;
var iframe = document.getElementById('iframe_id');
var iframedocument  = iframe.contentDocument;
var contentType = iframedocument.contentType || iframedocument.mimeType;