Nem todos os navegadores oferecem suporte a todos os atributos em todos os elementos. Há uma série de novos atributos no HTML5, então a ideia de testar para ver em que tipo de ambiente de navegador você está se torna cada vez mais importante.
function elementSupportsAttribute(element, attribute) ( var test = document.createElement(element); if (attribute in test) ( return true; ) else ( return false; ) );
Uso
if (elementSupportsAttribute("textarea", "placeholder") ( ) else ( // fallback )