我需要测试占位符支持。以下适用于所有现代浏览器,以及IE7,IE8,IE9:
$.support.placeholder = (function () {
var i = document.createElement("input");
return "placeholder" in i;
}());
它有效,但JSLint抱怨使用in
:
意外'in'。与undefined比较,或使用hasOwnProperty 方法改为。
很好,所以我会重构它:
$.support.placeholder = (function () {
var i = document.createElement("input");
return i.hasOwnProperty("placeholder");
}());
现在这传递了JSLint而没有任何错误或警告,但它在IE7和IE8中打破了这个旧板栗:
Object不支持属性或方法'hasOwnProperty'
知道如何让JSLint感到高兴,还有IE7和IE8?
答案 0 :(得分:15)
您还可以使用JSLint建议的其他解决方案:
return typeof i.placeholder !== 'undefined';
这应该可以跨浏览器正常运行。
答案 1 :(得分:5)
我的答案是不会。不要让JSLint高兴。 JSLint是Crockford应该如何看待JavaScript的。这是他的个人标准。如果您想要JavaScript的某种lint,请使用JSHint。它是JSLint的分叉版本,完全可配置且没有疯狂的要求。从它的主页:
JSHint是JSLint的一个分支,由Douglas编写和维护 克罗克福德。
该项目最初是为了努力创造更多 JSLint的可配置版本 - 不强制执行的版本 其用户的特定编码风格 - 但后来转化为 将静态分析工具与自己的目标和理想分开。
答案 2 :(得分:3)
您可以通过Object.prototype
获取该功能,然后在元素上call
获取该功能。这使得函数可用和,您可以以i.hasOwnProperty
方式调用它(即调用它时幕后的this
值为{{1} }}):
i