JavaScript:XMLSerializer对象检测IE8&;当代浏览器

JavaScript:XMLSerializer对象检测IE8&;当代浏览器,javascript,serialization,Javascript,Serialization,我正在尝试进行对象检测,以防止IE8在缺少新XMLSerializer()的情况下抛出错误,但是我没有找到一种跨浏览器的方法来解决这个问题。我通常使用对象!='未定义“,但是我还没有找到一种跨浏览器的方法来实现这一点 以下是我在Firefox10和IE8中测试的一些方法 if (typeof new XMLSerializer!='undefined') {alert('unsupported, 1');} if (typeof new XMLSerializer()!='undefined'

我正在尝试进行对象检测,以防止IE8在缺少
新XMLSerializer()
的情况下抛出错误,但是我没有找到一种跨浏览器的方法来解决这个问题。我通常使用
对象!='未定义“
,但是我还没有找到一种跨浏览器的方法来实现这一点

以下是我在Firefox10和IE8中测试的一些方法

if (typeof new XMLSerializer!='undefined') {alert('unsupported, 1');}

if (typeof new XMLSerializer()!='undefined') {alert('unsupported, 2');}

if (new XMLSerializer!='undefined') {alert('unsupported, 3');}

if (XMLSerializer!='undefined') {alert('unsupported, 4');}

if (window.XMLSerializer!='undefined') {alert('unsupported, 5');}

if (typeof XMLSerializer !== 'undefined') {alert('unsupported, 6');}

那么,我们如何在不受支持的浏览器(如IE8)中实现对
XMLSerializer
的对象检测而不触发错误呢?

您应该通过以下方法来测试它是否有:

if (typeof window.XMLSerializer !== 'undefined') {
    alert('Has XMLSerializer');
} else {
    alert('No has XMLSerializer');
}
这里有一把小提琴在演示:


或者我发布的原始提琴也应该可以工作(这测试了
window.XMLSerializer
的真实性):

您应该通过以下方式测试它是否有:

if (typeof window.XMLSerializer !== 'undefined') {
    alert('Has XMLSerializer');
} else {
    alert('No has XMLSerializer');
}
这里有一把小提琴在演示:


或者我发布的原始提琴也应该可以工作(这测试了
window.XMLSerializer
的真实性):

大多数功能检测通常是由
typeofxmlserializer!='未定义的“
我不确定这在这种情况下是否会起作用,尽管没有测试。这很明显,但它不起作用,因此我提出了我的问题。你的问题没有表明,这就是为什么我发表评论的原因:)你能描述一下“不起作用”吗?如果最坏的情况是最坏的情况,以及
if的典型功能检测(window.XMLSerializer)
和我上面提到的那个,您总是可以用
try{}catch{}
Updated…meh…是的,但我觉得使用try/catch就像必须使用setTimeout一样,因为DOM没有方法将事件触发到最后一个阶段。>\u\ u>大多数功能检测通常由
typeof XMLSerializer!==“undefined”
我不确定在这种情况下是否有效,尽管没有测试。这是显而易见的吗你的问题没有表明,这就是为什么我发表评论的原因:)你能描述一下“没有工作”吗?同样,如果最坏的情况发生了,如果(window.XMLSerializer)和我上面提到的一个典型的特性检测,你可以用
try{}catch{}来包装它
Updated…meh…是的,但是我觉得使用try/catch就像必须使用setTimeout一样,因为DOM没有方法将事件触发到最后一个阶段。>\u>