⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dom.js

📁 Ajax下日志框架
💻 JS
📖 第 1 页 / 共 3 页
字号:
        return elements;    },    _newCallStack: function (path, once) {        var rval = function () {            var callStack = arguments.callee.callStack;            for (var i = 0; i < callStack.length; i++) {                if (callStack[i].apply(this, arguments) === false) {                    break;                }            }            if (once) {                try {                    this[path] = null;                } catch (e) {                    // pass                }            }        };        rval.callStack = [];        return rval;    },    addToCallStack: function (target, path, func, once) {        var self = MochiKit.DOM;        var existing = target[path];        var regfunc = existing;        if (!(typeof(existing) == 'function'                && typeof(existing.callStack) == "object"                && existing.callStack !== null)) {            regfunc = self._newCallStack(path, once);            if (typeof(existing) == 'function') {                regfunc.callStack.push(existing);            }            target[path] = regfunc;        }        regfunc.callStack.push(func);    },    addLoadEvent: function (func) {        var self = MochiKit.DOM;        self.addToCallStack(self._window, "onload", func, true);            },    focusOnLoad: function (element) {        var self = MochiKit.DOM;        self.addLoadEvent(function () {            element = self.getElement(element);            if (element) {                element.focus();            }        });    },                setElementClass: function (element, className) {        var self = MochiKit.DOM;        var obj = self.getElement(element);        if (self.attributeArray.compliant) {            obj.setAttribute("class", className);        } else {            obj.setAttribute("className", className);        }    },                toggleElementClass: function (className/*, element... */) {        var self = MochiKit.DOM;        for (var i = 1; i < arguments.length; i++) {            var obj = self.getElement(arguments[i]);            if (!self.addElementClass(obj, className)) {                self.removeElementClass(obj, className);            }        }    },    addElementClass: function (element, className) {        var self = MochiKit.DOM;        var obj = self.getElement(element);        var cls = obj.className;        // trivial case, no className yet        if (cls.length === 0) {            self.setElementClass(obj, className);            return true;        }        // the other trivial case, already set as the only class        if (cls == className) {            return false;        }        var classes = obj.className.split(" ");        for (var i = 0; i < classes.length; i++) {            // already present            if (classes[i] == className) {                return false;            }        }        // append class        self.setElementClass(obj, cls + " " + className);        return true;    },    removeElementClass: function (element, className) {        var self = MochiKit.DOM;        var obj = self.getElement(element);        var cls = obj.className;        // trivial case, no className yet        if (cls.length === 0) {            return false;        }        // other trivial case, set only to className        if (cls == className) {            self.setElementClass(obj, "");            return true;        }        var classes = obj.className.split(" ");        for (var i = 0; i < classes.length; i++) {            // already present            if (classes[i] == className) {                // only check sane case where the class is used once                classes.splice(i, 1);                self.setElementClass(obj, classes.join(" "));                return true;            }        }        // not found        return false;    },    swapElementClass: function (element, fromClass, toClass) {        var obj = MochiKit.DOM.getElement(element);        var res = MochiKit.DOM.removeElementClass(obj, fromClass);        if (res) {            MochiKit.DOM.addElementClass(obj, toClass);        }        return res;    },    hasElementClass: function (element, className/*...*/) {        var obj = MochiKit.DOM.getElement(element);        var classes = obj.className.split(" ");        for (var i = 1; i < arguments.length; i++) {            var good = false;            for (var j = 0; j < classes.length; j++) {                if (classes[j] == arguments[i]) {                    good = true;                    break;                }            }            if (!good) {                return false;            }        }        return true;    },    escapeHTML: function (s) {        return s.replace(/&/g, "&amp;"            ).replace(/"/g, "&quot;"            ).replace(/</g, "&lt;"            ).replace(/>/g, "&gt;");    },    toHTML: function (dom) {        return MochiKit.DOM.emitHTML(dom).join("");    },    emitHTML: function (dom, /* optional */lst) {        if (typeof(lst) == 'undefined' || lst === null) {            lst = [];        }        // queue is the call stack, we're doing this non-recursively        var queue = [dom];        var self = MochiKit.DOM;        var escapeHTML = self.escapeHTML;        var attributeArray = self.attributeArray;        while (queue.length) {            dom = queue.pop();            if (typeof(dom) == 'string') {                lst.push(dom);            } else if (dom.nodeType == 1) {                // we're not using higher order stuff here                // because safari has heisenbugs.. argh.                //                // I think it might have something to do with                // garbage collection and function calls.                lst.push('<' + dom.nodeName.toLowerCase());                var attributes = [];                var domAttr = attributeArray(dom);                for (var i = 0; i < domAttr.length; i++) {                    var a = domAttr[i];                    attributes.push([                        " ",                        a.name,                        '="',                        escapeHTML(a.value),                        '"'                    ]);                }                attributes.sort();                for (i = 0; i < attributes.length; i++) {                    var attrs = attributes[i];                    for (var j = 0; j < attrs.length; j++) {                        lst.push(attrs[j]);                    }                }                if (dom.hasChildNodes()) {                    lst.push(">");                    // queue is the FILO call stack, so we put the close tag                    // on first                    queue.push("</" + dom.nodeName.toLowerCase() + ">");                    var cnodes = dom.childNodes;                    for (i = cnodes.length - 1; i >= 0; i--) {                        queue.push(cnodes[i]);                    }                } else {                    lst.push('/>');                }            } else if (dom.nodeType == 3) {                lst.push(escapeHTML(dom.nodeValue));            }        }        return lst;    },    setDisplayForElement: function (display, element/*, ...*/) {        var m = MochiKit.Base;        var elements = m.extend(null, arguments, 1);        MochiKit.Iter.forEach(            m.filter(null, m.map(MochiKit.DOM.getElement, elements)),            function (element) {                element.style.display = display;            }        );    },    scrapeText: function (node, /* optional */asArray) {        var rval = [];        (function (node) {            var cn = node.childNodes;            if (cn) {                for (var i = 0; i < cn.length; i++) {                    arguments.callee.call(this, cn[i]);                }            }            var nodeValue = node.nodeValue;            if (typeof(nodeValue) == 'string') {                rval.push(nodeValue);            }        })(MochiKit.DOM.getElement(node));        if (asArray) {            return rval;        } else {            return rval.join("");        }    },    __new__: function (win) {        var m = MochiKit.Base;        this._document = document;        this._window = win;        this.domConverters = new m.AdapterRegistry();                 var __tmpElement = this._document.createElement("span");        var attributeArray;        if (__tmpElement && __tmpElement.attributes &&                __tmpElement.attributes.length > 0) {            // for braindead browsers (IE) that insert extra junk            var filter = m.filter;            attributeArray = function (node) {                return filter(attributeArray.ignoreAttrFilter, node.attributes);            };            attributeArray.ignoreAttr = {};            MochiKit.Iter.forEach(__tmpElement.attributes, function (a) {                attributeArray.ignoreAttr[a.name] = a.value;            });            attributeArray.ignoreAttrFilter = function (a) {                return (attributeArray.ignoreAttr[a.name] != a.value);            };            attributeArray.compliant = false;            attributeArray.renames = {                "class": "className",                "checked": "defaultChecked",                "usemap": "useMap",                "for": "htmlFor"            };        } else {            attributeArray = function (node) {                /***                                        Return an array of attributes for a given node,                    filtering out attributes that don't belong for                    that are inserted by "Certain Browsers".                ***/                return node.attributes;            };            attributeArray.compliant = true;            attributeArray.renames = {};        }        this.attributeArray = attributeArray;        // shorthand for createDOM syntax        var createDOMFunc = this.createDOMFunc;        this.UL = createDOMFunc("ul");        this.OL = createDOMFunc("ol");        this.LI = createDOMFunc("li");        this.TD = createDOMFunc("td");        this.TR = createDOMFunc("tr");        this.TBODY = createDOMFunc("tbody");        this.THEAD = createDOMFunc("thead");        this.TFOOT = createDOMFunc("tfoot");        this.TABLE = createDOMFunc("table");        this.TH = createDOMFunc("th");        this.INPUT = createDOMFunc("input");        this.SPAN = createDOMFunc("span");        this.A = createDOMFunc("a");        this.DIV = createDOMFunc("div");        this.IMG = createDOMFunc("img");        this.BUTTON = createDOMFunc("button");        this.TT = createDOMFunc("tt");        this.PRE = createDOMFunc("pre");        this.H1 = createDOMFunc("h1");        this.H2 = createDOMFunc("h2");        this.H3 = createDOMFunc("h3");        this.BR = createDOMFunc("br");        this.HR = createDOMFunc("hr");        this.LABEL = createDOMFunc("label");        this.TEXTAREA = createDOMFunc("textarea");        this.FORM = createDOMFunc("form");        this.P = createDOMFunc("p");        this.SELECT = createDOMFunc("select");        this.OPTION = createDOMFunc("option");        this.OPTGROUP = createDOMFunc("optgroup");        this.LEGEND = createDOMFunc("legend");        this.FIELDSET = createDOMFunc("fieldset");        this.STRONG = createDOMFunc("strong");        this.CANVAS = createDOMFunc("canvas");        this.hideElement = m.partial(this.setDisplayForElement, "none");        this.showElement = m.partial(this.setDisplayForElement, "block");        this.removeElement = this.swapDOM;                this.$ = this.getElement;        this.EXPORT_TAGS = {            ":common": this.EXPORT,            ":all": m.concat(this.EXPORT, this.EXPORT_OK)        };        m.nameFunctions(this);    }});MochiKit.DOM.__new__(((typeof(window) == "undefined") ? this : window));//// XXX: Internet Explorer blows//if (!MochiKit.__compat__) {    withWindow = MochiKit.DOM.withWindow;    withDocument = MochiKit.DOM.withDocument;}MochiKit.Base._exportSymbols(this, MochiKit.DOM);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -