Problemas de detección de la característica HTML5 Placeholder

Necesito probar para soporte de marcador de position. Lo siguiente funciona muy bien en todos los browseres modernos, así como en IE7, IE8, IE9:

$.support.placeholder = (function () { var i = document.createElement("input"); return "placeholder" in i; }()); 

Funciona, pero JSLint se queja sobre el uso de in :

Inesperado 'en'. Compare con undefined, o use el método hasOwnProperty en su lugar.

Bien, entonces lo refactorizaré a esto:

 $.support.placeholder = (function () { var i = document.createElement("input"); return i.hasOwnProperty("placeholder"); }()); 

Ahora esto pasa JSLint sin ningún error o advertencia, pero se rompe en IE7 e IE8 con esta vieja castaña:

El object no admite la propiedad o el método 'hasOwnProperty'

¿Alguna idea de cómo hacer feliz a JSLint, así como a IE7 e IE8?

También puede usar la otra solución que JSLint sugiere:

 return typeof i.placeholder !== 'undefined'; 

Esto debería funcionar en el browser cruzado sin problemas.

Mi respuesta sería no. No hagas feliz a JSLint. JSLint es cómo debería hacerse Crockford views JavaScript. Es su estándar personal. Si desea algún tipo de pelusa para JavaScript, use JSHint . Es una versión bifurcada de JSLint que es completamente configurable y sin los requisitos locos. Desde su página de inicio:

JSHint es una bifurcación de JSLint, la herramienta escrita y mantenida por Douglas Crockford.

El proyecto originalmente comenzó como un esfuerzo para hacer una versión más configurable de JSLint, la que no impone un coding style particular a sus usuarios, pero luego se transformó en una herramienta de análisis estático independiente con sus propios objectives e ideales.

Puede recuperar la function a través de Object.prototype y luego Object.prototype en el elemento. Esto hace que la function esté disponible y que pueda llamarla de manera i.hasOwnProperty (es decir, el valor detrás de las escenas cuando lo llamo es i ):

 Object.prototype.hasOwnProperty.call(i, "placeholder");