为一个 Javascript 个特征创建特征检测(intersectionObserver)
Create Feature detection for One Javascript Feature (intersectionObserver)
有没有一种方法可以将内置的 javascript 方法存储在变量中,以便在某些浏览器无法使用此方法时设置不同的行为?
我的具体情况是 intersectionObserver,它在 Safari 或旧版 MS 浏览器中不可用。我有一些由此触发的动画,如果 intersectionObserver 不可用,我想将它们关闭。
我想做的基本上是这样的:
var iO = intersectionObserver;
if ( !iO ) {
// set other defaults
}
我真的不想只为一个功能加载 polyfill 或库吗?
非常感谢
艾米丽
运算符中的广泛用于检测浏览器支持的功能。 JavaScript 功能作为 属性 到 window
对象在全球范围内可用。所以我们可以检查 window
元素是否有 属性.
if("IntersectionObserver" in window){
/* work with IntersectionObserver */
}
if("FileReader" in window){
/* work with FileReader */
}
The in
operator returns true
if the specified property is in the
specified object or its prototype chain.
Syntax: prop in object
[source: developer.mozilla.org]
因此您还可以将结果保存在 boolean
变量中,稍后在您的代码中使用它。
var iO = "IntersectionObserver" in window; /* true if supported */
if ( !iO ) {
// set other defaults
}
有没有一种方法可以将内置的 javascript 方法存储在变量中,以便在某些浏览器无法使用此方法时设置不同的行为?
我的具体情况是 intersectionObserver,它在 Safari 或旧版 MS 浏览器中不可用。我有一些由此触发的动画,如果 intersectionObserver 不可用,我想将它们关闭。
我想做的基本上是这样的:
var iO = intersectionObserver;
if ( !iO ) {
// set other defaults
}
我真的不想只为一个功能加载 polyfill 或库吗?
非常感谢
艾米丽
运算符中的广泛用于检测浏览器支持的功能。 JavaScript 功能作为 属性 到 window
对象在全球范围内可用。所以我们可以检查 window
元素是否有 属性.
if("IntersectionObserver" in window){
/* work with IntersectionObserver */
}
if("FileReader" in window){
/* work with FileReader */
}
The
in
operator returnstrue
if the specified property is in the specified object or its prototype chain.
Syntax: prop in object
[source: developer.mozilla.org]
因此您还可以将结果保存在 boolean
变量中,稍后在您的代码中使用它。
var iO = "IntersectionObserver" in window; /* true if supported */
if ( !iO ) {
// set other defaults
}