是否在< = IE8中提供占位符属性

时间:2013-05-07 03:55:04

标签: javascript html cross-browser

我了解实际的html5占位符功能不可用< IE10,但实际的标签属性是否仍然可用?

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

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 个答案:

答案 0 :(得分:1)

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

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


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