10

有没有办法将内置的 javascript 方法存储在变量中,以便在某些浏览器中不提供此方法时设置不同的行为?

我的具体情况是针对 Safari 或旧版 MS 浏览器中不可用的 intersectionObserver。我有一些由此触发的动画,如果intersectionObserver 不可用,我想关闭它们。

我想要做的基本上是:

var iO = intersectionObserver;

if ( !iO ) {
 // set other defaults
}

我真的不想为一个功能加载 polyfill 或库吗?

非常感谢

艾米丽

4

1 回答 1

15

in 运算符广泛用于检测浏览器支持的功能。JavaScript 功能可作为window对象的属性全局使用。因此我们可以检查window元素是否具有该属性。

if("IntersectionObserver" in window){
    /* work with IntersectionObserver */
}
if("FileReader" in window){
    /* work with FileReader */
}

如果指定的属性在指定的对象或其原​​型链中,则in运算符返回。语法:对象中的道具[来源:developer.mozilla.org ]true

因此,您还可以将结果保存在boolean变量中,稍后在代码中使用它。

var iO = "IntersectionObserver" in window; /* true if supported */

if ( !iO ) {
 // set other defaults
}
于 2018-03-10T02:40:14.983 回答