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

📄 popup.lib.js

📁 asp的bbs程序
💻 JS
字号:
/*
  By Hangring
  #2007.12.27#
  ---
  use list:
  > global.lib.js
  > node.lib.js
  > event.lib.js
  > browser.lib.js
  ---
  浮动层/面板
*/

$Defined('PopUp');
var PopUp = {};

PopUp.Index = 1;

// 创建面板
/*
    var panel = PopUp.Panel(node, node_width, node_height, is_center_or_not);
    // className 设置panel的样式,包含position属性设置
    CSS.AddClass(panel, className); 
    // 设置panel浮动,并是否以警告框的方式呈现
    PopUp.AddPopUp(panel, !true);
*/
PopUp.Panel = 
function (item /* string or node:String|HTMLElement */, w /* width:Number */, h /* height:Number */, p /* center or not:Boolean */) {
    // 是否已在文档中
    var leaf = oNode.IsNode(item) && item.parentNode;
    var panel = leaf ? item : oNode.CreateNode('div');
    panel.tabIndex = "-1";
    panel.style.position = 'absolute';
    // 防止瞬时出现滚动条引起位置错位
    panel.style.left = '-10000px';
    panel.style.top  = '-10000px';
    panel.style.zIndex = 2;
    //panel.style.zIndex = PopUp.Index++;
    
    if (leaf) panel.$Parent = panel.parentNode;

    // 可调用使面板居中
    panel.Center = function (center) {
        if (center || p) {
            if (leaf) {
                panel.style.display = 'block';
                w = panel.offsetWidth;
                h = panel.offsetHeight;
            }
            w = w || panel.offsetWidth;
            h = h || panel.offsetHeight;
            panel.$P = p;
            panel.style.left = ((Global.GetClientWidth() || Global.GetDocWidth()) - w) / 2 + 'px';
            panel.style.top = Global.GetScrollTop() + ((Global.GetClientHeight() || Global.GetDocHeight()) - h) / 2 + 'px';
            function move () {
                if (w != panel.offsetWidth) w = panel.offsetWidth;
                if (h != panel.offsetHeight) h = panel.offsetHeight;
                panel.style.left = ((Global.GetClientWidth() || Global.GetDocWidth()) - w) / 2 + 'px';
                panel.style.top = Global.GetScrollTop() + ((Global.GetClientHeight() || Global.GetDocHeight()) - h) / 2 + 'px';

                if (panel.$D) {
                    //panel.$D.style.width = Global.GetDocWidth() - (Browser.IsIE56 ? 20 : 0) + 'px';
                    //panel.$D.style.height = Global.GetDocHeight() - (Browser.IsIE56 ? 5 : 0) + 'px';
                    panel.$D.Show();
                }
                if (panel.$M) {
                    panel.$M.style.left = panel.style.left;
                    panel.$M.style.top = panel.style.top;
                }
            }
            panel.$Move = move;
            Events.AttachEvent(window, 'resize', move);
        }
    };
    panel.Center();

    // 针对字符串与节点类型执行添加
    if (typeof item != 'string') {
        if (!leaf) oNode.AddNode(item, panel);
    }
    else {
        panel.innerHTML = item;
    }

    return panel;
};

// 添加浮动面板
PopUp.AddPopUp = 
function (node /* panel:HTMLElement */, modal /* isAlert or isPanel:Boolean */, target /* container:HTMLElement */) {
    //if (! oNode.AddNode(node, target)) return false;
    oNode.AddNode(node, target);
    if (modal) var D = node.$D = CSS.AddBack(node, true);
    return node.$D;
};

// 为非警告框模式使用
// 针对ie6及以下版本,屏蔽select对象
PopUp.AddMask = function (node /* panel:HTMLElement */) {
    if (!Browser.IsIE56) return;
    var M = node.$M = oNode.CreateNode('iframe');
    oNode.InsertBefore(M, node);
    M.frameBorder = 0;
    M.scrolling = 'no';
    with (M.style) {
        position = 'absolute';
        left = node.style.left;
        top = node.style.top;
        width = node.offsetWidth + 'px';
        height = node.offsetHeight + 'px';
        opacity = 0;
        filter = 'alpha(opacity=0)';
    }
};

// 移除浮动面板
// 由PopUp创建的浮动层,应该用此方法从文档中移除,否则可能会出现意外错误
PopUp.RemovePopUp = function (node /* panel:HTMLElement */, target) {
    target = target || document.body;
    if (node.parentNode != target) return false;

    oNode.RemoveNode(node, target);
    if (node.$D) oNode.RemoveNode(node.$D, node.$D.parentNode);
    if (node.$M) oNode.RemoveNode(node.$M, node.parentNode);
    if (node.$BG) oNode.RemoveNode(node.$BG);
    if (node.$P) Events.RemoveEvent(window, 'resize', node.$Move);
};

// 如果node已经在文档中,通过PopUp.Panel(node)设置时,
// 在其后可通过此方法将该node取消浮动,而不从文档树中删除,
// node.$Parent为此方法必须设置的参数
// 使用PopUp.RemovePopUp()可删除浮动层
PopUp.RestorePopUp = function (node /* panel:HTMLElement */) {
    node.style.left = '-10000px';
    node.style.top  = '-10000px';
    PopUp.RemovePopUp(node, node.parentNode);
    node.$Parent && oNode.AddNode(node, node.$Parent);
};

/* 设置浮动层位置 */
PopUp.SetXY = function (node /* panel:HTMLElement */, x, y) {
    node.style.left = typeof x == 'string' ? x : x + 'px';
    node.style.top = typeof y == 'string' ? y : y + 'px';
    if (node.$M) {
        node.$M.style.left = node.style.left;
        node.$M.style.top = node.style.top;
    }
};

/* 重置位置 */
PopUp.ResetXY = function (node /* panel:HTMLElement */) {
    if (node.$M) {
        node.$M.style.left = node.style.left;
        node.$M.style.top = node.style.top;
    }
}

/* 设置浮动层尺寸 */
PopUp.SetSize = function (node /* panel:HTMLElement */, w /* :Number|String */, h /* :Number|String */) {
    this.SetSizeW(node, w);
    this.SetSizeH(node, h);
};
PopUp.SetSizeW = function (node /* panel:HTMLElement */, w /* :Number|String */) {
    w = typeof w == 'string' ? w : w + 'px';
    node.style.width = w;
    this.ResetSize(node);
};
PopUp.SetSizeH = function (node /* panel:HTMLElement */, h /* :Number|String */) {
    h = typeof h == 'string' ? h : h + 'px';
    node.style.height = h;
    this.ResetSize(node);
};

/* 重置大小 */
PopUp.ResetSize = function (node /* panel:HTMLElement */) {
    if (node.$M) {
        node.$M.style.width = node.offsetWidth + 'px';
        node.$M.style.height = node.offsetHeight + 'px';
    }
};

// 设置显示隐藏浮动层
PopUp.SetVisible = function (node /* panel:HTMLElement */, visible /* :Boolean */) {
    visible = visible ? 'visible' : 'hidden';
    node.style.visibility = visible;
    if (node.$D) node.$D.style.visibility = visible;
    if (node.$M) node.$M.style.visibility = visible;
    if (node.$BG) node.$BG.style.visibility = visible;
};

// 设置显示隐藏浮动层
PopUp.SetDisplay = function (node /* panel:HTMLElement */, display /* :Boolean */) {
    display = display ? 'block' : 'none';
    node.style.display = display;
    if (node.$D) node.$D.style.display = display;
    if (node.$M) node.$M.style.display = display;
    if (node.$BG) node.$BG.style.display = display;
};

// 设置蒙版是否可见
PopUp.HideModal = function (node /* panel:HTMLElement */) {
    if (node.$D) CSS.SetAlpha(node.$D, 0);
}

⌨️ 快捷键说明

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