2013-05-07 43 views
0

我知道实际的html5占位符功能不可用< IE10,但是实际的标记属性仍然可用吗?是否可以在<= IE8中使用占位符属性

要创建自己的自定义占位符,我用下面的脚本:

if(core.isInput(el)) { 
    el.initValue = str; 
    el.txtColor = core.dom.css(el, 'color'); 
    var set = function() { 
     if(el.value == '') { 
      el.value = el.initValue; 
      el.style.color = '#BDBAB5'; 
     } 
    }; 
    set(); //Set the placeholder 

    core.dom.on(el, 'focus', function() { 
     if(this.value == this.initValue) { 
      this.value = ''; 
      this.style.color = this.txtColor; 
     } 
    }); 

    core.dom.on(el, 'blur', set); 
} else { 
    console.error('Element is not an input.'); 
} 

而不是必须手动设置占位符的元素,是有可能做这样的事情:

var inputs = document.getElementsByTagName('input'); 
for(var i=0; i<inputs.length; i++) { 
    var input = inputs[i]; 
    if(input.getAttribute('placeholder') != undefined) { 
     //Set placeholder code 
    } 
} 

换句话说,如果我在HTML中设置了一个占位符,并且浏览器不支持它们,那么当我使用getAttribute时,该属性在输入上是否仍然可用?当我进行input.getAttribute('placeholder')检查时,我设置的属性最初是否可用,或者如果浏览器不支持它,浏览器是否会自动删除占位符属性?

目前我手动添加每个输入的占位符功能,但我宁愿使用自动onload脚本来完成这项工作。如果我无法通过检测占位符值来确定输入应该占位符,它将无法工作。

+1

https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#web-forms--input-placeholder – 2013-05-07 03:56:23

+0

我宁愿写我自己的解决方案。 – ryandlf 2013-05-07 03:58:22

+2

有什么意义? – 2013-05-07 03:59:53

回答

1

所有主流的现代浏览器(例如IE,FF,Webkit)都接受“ad hoc”属性 - 我怀疑这是出于历史和兼容性原因。

由于getAttribute(应该)只返回文本DOM值,所以这应该在现代浏览器中一致地工作,并且该值不会被删除或以其他方式更改。 (IE已经在过去的特殊属性搞砸getAttribute。)


警告:我无法找到证据支持在W3C DOM(或W3C HTML建议),是否DOM实现(或用户代理)必须接受可能会拒绝未在IDL中指定的属性。

+0

为什么不只是编辑你的评论到你的答案? – Sparky 2013-05-07 04:24:29

相关问题