0

我了解实际的 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') 检查时,我最初设置的属性是否可用,或者如果不支持,浏览器是否会自动删除占位符属性?

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

4

1 回答 1

1

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

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


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

于 2013-05-07T04:08:57.157 回答