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

📄 dommenu.js

📁 j2ee源码
💻 JS
📖 第 1 页 / 共 4 页
字号:
        'leftCenter', offsetLeft + originalWidth/2,
        'topCenter',  offsetTop + originalHeight/2,
        'radius',     Math.max(originalWidth, originalHeight)
    );
}

// }}}
// {{{ domMenu_callTimeout()

function domMenu_callTimeout(in_function, in_timeout, in_args, in_basename, in_type)
{
    if (in_timeout == 0) {
        var tmp_function = new Function('argv', in_function);
        tmp_function(in_args);
    }
    else if (in_timeout > 0) {
        // after we complete the timeout call, we want to remove the reference, so always add that
        var tmp_function = new Function('argv', in_function + ' domMenu_timeouts[' + domMenu_quote(in_type) + '].removeItem(' + domMenu_quote(in_basename) + ');');

        var tmp_args = new Array();
        for (var i = 0; i < in_args.length; i++) {
            tmp_args[i] = in_args[i];
        }

        if (!domMenu_isKonq && !domMenu_isIE50) {
            domMenu_timeouts[in_type].setItem(in_basename, setTimeout(function() { tmp_function(tmp_args); }, in_timeout));
        }
        else {
            var tmp_data = new Array();
            tmp_data['function'] = tmp_function;
            tmp_data['args'] = tmp_args;
            domMenu_timeoutStates[in_type].setItem(in_basename, tmp_data);
            var tmp_type = domMenu_quote(in_type);
            var tmp_basename = domMenu_quote(in_basename);

            domMenu_timeouts[in_type].setItem(in_basename, setTimeout('domMenu_timeoutStates[' + tmp_type + '].items[' + tmp_basename + '][' + domMenu_quote('function') + '](domMenu_timeoutStates[' + tmp_type + '].items[' + tmp_basename + '][' + domMenu_quote('args') + ']); domMenu_timeoutStates[' + tmp_type + '].removeItem(' + tmp_basename + ');', in_timeout));
        }
    }
}

// }}}
// {{{ domMenu_cancelTimeout()

function domMenu_cancelTimeout(in_basename, in_type)
{
    // take advantage of browsers which use the anonymous function
    if (!domMenu_isKonq && !domMenu_isIE50) {
        clearTimeout(domMenu_timeouts[in_type].removeItem(in_basename));
    }
    else {
        // if konqueror, we only want to clearTimeout if it is still running
        if (domMenu_timeoutStates[in_type].hasItem(in_basename)) {
            clearTimeout(domMenu_timeouts[in_type].removeItem(in_basename));
            domMenu_timeoutStates[in_type].removeItem(in_basename);
        }
    }
}

// }}}
// {{{ domMenu_correctEdgeBleed()

function domMenu_correctEdgeBleed(in_width, in_height, in_x, in_y, in_padding, in_axis)
{
    if (domMenu_isIE && !domMenu_isIE5) {
        var pageHeight = document.documentElement.clientHeight;
    }
    else if (!domMenu_isKonq) {
        var pageHeight = document.body.clientHeight;
    }
    else {
        var pageHeight = window.innerHeight;
    }

    var pageYOffset = domMenu_isIE ? document.body.scrollTop : window.pageYOffset;
    var pageXOffset = domMenu_isIE ? document.body.scrollLeft : window.pageXOffset;


    if (in_axis == 'horizontal') {
        var bleedRight = (in_x - pageXOffset) + in_width - (document.body.clientWidth - in_padding);
        var bleedLeft = (in_x - pageXOffset) - in_padding;

        // we are bleeding off the right, move menu to stay on page
        if (bleedRight > 0) {
            in_x -= bleedRight;
        }

        // we are bleeding to the left, move menu over to stay on page
        // we don't want an 'else if' here, because if it doesn't fit we will bleed off the right
        if (bleedLeft < 0) {
            in_x += bleedLeft;
        }
    }
    else {
        var bleedTop = (in_y - pageYOffset) - in_padding;
        var bleedBottom = (in_y - pageYOffset) + in_height - (pageHeight - in_padding);

        // if we are bleeding off the bottom, move menu to stay on page
        if (bleedBottom > 0) {
            in_y -= bleedBottom;
        }

        // if we are bleeding off the top, move menu down
        // we don't want an 'else if' here, because if we just can't fit it, bleed off the bottom
        if (bleedTop < 0) {
            in_y += bleedTop;
        }
    }

    return new Array(in_x, in_y);
}

// }}}
// {{{ domMenu_toggleSubMenu()

function domMenu_toggleSubMenu(in_parentElement, in_style)
{
    var subMenu = in_parentElement.data.items['subMenu'];
    if (subMenu && subMenu.style.visibility != in_style) {
        var settings = domMenu_settings.items[in_parentElement.data.items['basename']];
        var prefix = in_parentElement.data.items['level'] == 1 ? 'menu' : 'subMenu';
        var className = settings.items[prefix + 'ElementClass'];
        // :BUG: this is a problem if submenus click to open, then it won't
        // have the right class when you click to close
        if (in_style == 'visible') {
            className += ' ' + settings.items[prefix + 'Element' + (in_style == 'visible' ? 'Active' : 'Hover') + 'Class'];
        }

        in_parentElement.firstChild.className = className;

        // position our submenu
        if (in_style == 'visible') {
            var tmp_offsets = domMenu_getOffsets(in_parentElement);
            if (in_parentElement.data.items['level'] == 1) {
                tmp_offsets.items['top'] += settings.items['verticalSubMenuOffsetY'];
                tmp_offsets.items['bottom'] += settings.items['verticalSubMenuOffsetY'];
                tmp_offsets.items['left'] += settings.items['verticalSubMenuOffsetX'];
                tmp_offsets.items['right'] += settings.items['verticalSubMenuOffsetX'];
            }

            // reposition if there was a change in the parent position/size
            if (!in_parentElement.data.items['offsets'].compare(tmp_offsets)) {
                in_parentElement.data.items['offsets'] = tmp_offsets;

                if (settings.items['axis'] == 'horizontal' && in_parentElement.data.items['level'] == 1) {
                    var xCoor = tmp_offsets.items['left'];
                    if (settings.items['verticalExpand'] == 'north') {
                        var yCoor = tmp_offsets.items['top'] - subMenu.offsetHeight - settings.items['verticalSubMenuOffsetY'];
                    }
                    else {
                        var yCoor = tmp_offsets.items['bottom'];
                    }
                }
                else {
                    var xCoor = tmp_offsets.items['right'] + settings.items['horizontalSubMenuOffsetX'];
                    var yCoor = tmp_offsets.items['top'] + settings.items['horizontalSubMenuOffsetY'];
                }

                var minWidth = settings.items['subMenuMinWidth'];
                var renderedWidth = subMenu.offsetWidth;
                if (minWidth == 'inherit') {
                    minWidth = in_parentElement.offsetWidth + settings.items['subMenuWidthCorrection'];
                }
                else if (minWidth == 'auto') {
                    minWidth = renderedWidth;
                }

                if (domMenu_isKonq) {
                    // change with width of the first cell
                    subMenu.firstChild.firstChild.firstChild.firstChild.style.width = Math.max(minWidth, renderedWidth) + 'px';
                }
                else {
                    // change the width of the table
                    subMenu.firstChild.style.width = Math.max(minWidth, renderedWidth) + 'px';
                }

                var coordinates = domMenu_correctEdgeBleed(subMenu.offsetWidth, subMenu.offsetHeight, xCoor, yCoor, settings.items['screenPadding'], settings.items['axis']);
                subMenu.style.left = coordinates[0] + 'px';
                subMenu.style.top = coordinates[1] + 'px';

                // ** if we inherit, it is necessary to check the parent element width again **
                if (settings.items['axis'] == 'horizontal' && settings.items['subMenuMinWidth'] == 'inherit') {
                    subMenu.firstChild.style.width = Math.max(in_parentElement.offsetWidth + settings.items['subMenuWidthCorrection'], renderedWidth) + 'px';
                }
            }
        }

        // force konqueror to change the styles
        if (domMenu_isKonq) {
            in_parentElement.firstChild.style.display = 'none';
            in_parentElement.firstChild.style.display = '';
        }

        subMenu.style.visibility = in_style;
        domMenu_detectCollisions(subMenu, (in_style == 'hidden'));
    }
}

// }}}
// {{{ domMenu_toggleHighlight()

function domMenu_toggleHighlight(in_element, in_status)
{
    // if this is a heading, don't change the style
    if (!in_element.data.items['numChildren'] && !in_element.data.items['uri']) {
        return;
    }

    var settings = domMenu_settings.items[in_element.data.items['basename']];
    var prefix = in_element.data.items['level'] == 1 ? 'menu' : 'subMenu';
    var className = settings.items[prefix + 'ElementClass'];
    var highlightElement = in_element.firstChild;

    var pseudoClass;
    if (in_status) {
        if (in_element.data.hasItem('subMenu') && in_element.data.items['subMenu'].style.visibility == 'visible') {
            pseudoClass = 'Active';
        }
        else if (in_element.data.items['numChildren'] || in_element.data.items['uri']) {
            pseudoClass = 'Hover';
        }
    }

    if (pseudoClass) {
        className += ' ' + settings.items[prefix + 'Element' + pseudoClass + 'Class'];
        // if we are changing to hover, change the alt contents (only change if needs it)
        if (highlightElement.childNodes.length == 2 && highlightElement.lastChild.style.display == 'none') {
            highlightElement.firstChild.style.display = 'none';
            highlightElement.lastChild.style.display = '';
        }
    }
    else {
        // if we are changing to non-hover, change the alt contents (only change if needs it)
        if (highlightElement.childNodes.length == 2 && highlightElement.firstChild.style.display == 'none') {
            highlightElement.lastChild.style.display = 'none';
            highlightElement.firstChild.style.display = '';
        }
    }

    highlightElement.className = className;

    // force konqueror to change the styles
    if (domMenu_isKonq) {
        highlightElement.style.display = 'none';
        highlightElement.style.display = '';
    }
}

// }}}
// {{{ domMenu_resolveLink()

function domMenu_resolveLink(in_this, in_event)
{
    var eventObj = domMenu_isIE ? event : in_event;
    var currentTarget = domMenu_isIE ? in_this : eventObj.currentTarget;
    var basename = currentTarget.data.items['basename'];

    // close the menu system immediately when we resolve the uri
    domMenu_changeActivePath(false, domMenu_activeElement.items[basename], 0);

    if (currentTarget.data.items['uri']) {
        window.status = 'Resolving Link...';

        // open in current window
        if (!currentTarget.data.items['target'] || currentTarget.data.items['target'] == '_self') {
            window.location = currentTarget.data.items['uri'];
        }
        // open in new window
        else {
            window.open(currentTarget.data.items['uri'], currentTarget.data.items['target']);
        }
    }
}

// }}}
// {{{ domMenu_quote()

function domMenu_quote(in_string)
{
    return "'" + in_string.replace(new RegExp("'", 'g'), "\\'") + "'";
}

// }}}


function fixCircleRefs(){
//     alert (document.all.length)
    if(document.all){
        var el;
        for(var d=0;d<document.all.length;d++){
            if (d > 200) break;
            el = document.all[d];
//             alert (el.name + " :: " + d);
            for(var c = cearElementProps.length;c--;){
                el[cearElementProps[c]] = null;
            }
        }
    }
}

⌨️ 快捷键说明

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