如何知道iframe内容在加载事件中是html还是json

Gui*_*rez 6 jquery json

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

Gui*_*rez 6

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

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

var iframedocument = $(this).contents().get(0);
var contentType = iframedocument.contentType || iframedocument.mimeType;
Run Code Online (Sandbox Code Playgroud)

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

var iframedocument  = this.contentDocument;
var contentType = iframedocument.contentType || iframedocument.mimeType;
Run Code Online (Sandbox Code Playgroud)

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

var iframe = document.getElementById('iframe_id');
var iframedocument  = iframe.contentDocument;
var contentType = iframedocument.contentType || iframedocument.mimeType;
Run Code Online (Sandbox Code Playgroud)

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

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