# Yahoo! UI Library

### node 3.3.0

Yahoo! UI Library > node > node-ie.js (source view)
Search:
Filters Show Private Show Protected Show Deprecated

    if (!Y.config.doc.documentElement.hasAttribute) { // IE < 8
        Y.Node.prototype.hasAttribute = function(attr) {
            if (attr === 'value') {
                if (this.get('value') !== "") { // IE < 8 fails to populate specified when set in HTML
                    return true;
                }
            }
            return !!(this._node.attributes[attr] &&
                    this._node.attributes[attr].specified);
        };
    }

    // IE throws an error when calling focus() on an element that's invisible, not
    // displayed, or disabled.
    Y.Node.prototype.focus = function () {
        try {
            this._node.focus();
        } catch (e) {
            Y.log('error focusing node: ' + e.toString(), 'error', 'node');
        }
    };

    // IE throws error when setting input.type = 'hidden',
    // input.setAttribute('type', 'hidden') and input.attributes.type.value = 'hidden'
    Y.Node.ATTRS.type = {
        setter: function(val) {
            if (val === 'hidden') {
                try {
                    this._node.type = 'hidden';
                } catch(e) {
                    this.setStyle('display', 'none');
                    this._inputType = 'hidden';
                }
            } else {
                try { // IE errors when changing the type from "hidden'
                    this._node.type = val;
                } catch (e) {
                    Y.log('error setting type: ' + val, 'info', 'node');
                }
            }
            return val;
        },

        getter: function() {
            return this._inputType || this._node.type;
        },

        _bypassProxy: true // don't update DOM when using with Attribute
    };

    if (Y.config.doc.createElement('form').elements.nodeType) {
        // IE: elements collection is also FORM node which trips up scrubVal.
        Y.Node.ATTRS.elements = {
                getter: function() {
                    return this.all('input, textarea, button, select');
                }
        };
    }

Copyright © 2011 Yahoo! Inc. All rights reserved.