我正在创建自己的Javascript库。它改变了输入中的占位符,这意味着添加对< IE9毫无意义。因此我正在使用document.querySelectorAll
。
这是一个独立的库,因此我不想使用其他库,例如Modernizr.js
我应该在哪里测试该函数的兼容性,并且输入实际上支持占位符?
http://jsfiddle.net/WR3Mr/1/这就是我到目前为止所做的事情(请参阅Javascript窗口和我留下的评论)。如果像我现在这样做,在不支持这些东西的浏览器上,它会在用户的脚本上抛出一个ReferenceError,因为不会定义PHR / PlaceholderRotator。
这是正确的方法吗?不喜欢它。
答案 0 :(得分:1)
您可以使用以下方式检查querySelector()
支持:
if('querySelector' in document)
或更简单:
if(document.querySelector)
您不希望让您的脚本不必要地执行额外的工作。如果库的纯函数用作placeholder
属性的填充/ shiv,那么最好检查这些属性是否受支持并在运行任何更多库之前本地处理它们。 / p>
答案 1 :(得分:0)
执行此操作的标准方法是:
var foo;
if(document.querySelector) {
foo = document.querySelector;
} else {
foo = function() {
...code which emulates document.querySelector...
}
}
之后,您只需拨打foo()
。
这种方法的主要优点是你通常知道你需要做什么。因此,为此创建一个专门针对您需求的功能是有意义的。然后你可以在很多地方使用这个功能。如果出现问题,您只需要在一个(或两个)位置修复它。使用上面的功能开关,您不需要昂贵的if()
构造 - 只需调用该函数;如果可以的话,它已准备就绪。