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

📄 common.js

📁 asp的bbs程序
💻 JS
📖 第 1 页 / 共 4 页
字号:
// 重设验证码
function validateReset (id) {
    // 重设验证码
    var p = $(id);
    if (!p) return;
    var img = p.getElementsByTagName('img')[0];
    if (!img)  return;
    if (!img._src) img._src = img.src;
    img.src = img._src + '&rnd=' + Math.random();
}

// 重新加载图片
function reloadImage (th) {
    if (!th._src) th._src = th.src;
    var src = th._src + (th._src.indexOf('?') > -1 ? '&' : '?');
    th.src = src + 'rnd=' + Math.random();
}

/// 页面事件处理
// 当前注册的执行列表
DomEvent.events = {};
// 存放上一次的注册列表
DomEvent.list = [];
// 标识不存放在DomEvent.list
DomEvent.saved = true;
// 标识是否可执行事件
DomEvent.EventExecuteAble = true;
// 标识是否可执行事件,并只执行此方法
DomEvent.EventExecuteFunc = new Function();
function DomEvent () {
    var isShift, isCtrl, isAlt;
    var type = 0;
    
    function keyEvent (e) {
        // 执行次数
        var num = 0;
        // 记录独立回车次数
        var EnterNum = 0;
        isShift = e.shiftKey;
        isCtrl = e.ctrlKey;
        isAlt = e.altKey;
        var es = DomEvent.events;
        for (var item in es) {
            if ((!es[item][0].isShift && !es[item][0].isCtrl && !es[item][0].isAlt && !isShift && !isCtrl && !isAlt && es[item][0].keyCode == e.keyCode && e.keyCode == 13 && (type = 1)) ||
                (isShift && isShift == es[item][0].isShift && es[item][0].keyCode == e.keyCode && (type = 2)) ||
                (isCtrl && isCtrl == es[item][0].isCtrl && es[item][0].keyCode == e.keyCode && (type = 3)) ||
                (isAlt && isAlt == es[item][0].isAlt && es[item][0].keyCode == e.keyCode && (type = 4))) {
                ///
                num++;
                if (type == 1 && !DomEvent.EventExecuteAble) {
                    DomEvent.EventExecuteFunc && DomEvent.EventExecuteFunc();
                    return false;
                }
                if (type == 1 && $EO(e).tagName.toLowerCase() == 'textarea') {
					if (Widget.InfoNum == 1) {
						Events.CancelAll(e);
						DomEvent.DefaultClose();
					}
                    return false;
                }
                if (Widget.InfoNum == 1) {
                    DomEvent.DefaultClose();
                    Events.CancelAll(e);
                    return false;
                }
                else {
                    if (type == 1 && es[item][2] && $(es[item][2]) && $(es[item][2]).type == 'submit')
                        continue;
                    if (es[item][2] && $(es[item][2]))
                        es[item][1].call($(es[item][2]));
                    else
                        es[item][1]();
                }
            }
        }
    }
    if (Browser.IsOpera) 
        Events.AttachEvent(document, 'keypress', keyEvent);
    else 
        Events.AttachEvent(document, 'keydown', keyEvent);

    DomEvent.AttachDefault();
}
// 注册默认`enter`关闭警告层
DomEvent.AttachDefault = function () {
    DomEvent.events['InfoClose_' + Global.Random()] = [
        {
            isShift: false,
            isCtrl: false,
            isAlt: false,
            keyCode: 13
        },
        DomEvent.DefaultClose
    ];
};
// 关闭警告框
DomEvent.DefaultClose = function () {
    Widget && Widget.InfoClose();
    AjaxRequest.IsSubmited = false;
};
// 清除当前已注册的事件
// `retrieve`重新注册上一次的事件
DomEvent.Clear = function (retrieve) {
    this.events = {};
    this.saved = false;
    if (retrieve) {
        this.saved = true;
        for (var i = 0, len = this.list.length; i < len; i++) {
            var l = this.list[i];
            setShortcut.apply(null, l);
        }
    }
    // 默认需要的事件
    DomEvent.AttachDefault();
};
// 注册按钮事件并注册快捷方式
function setShortcut (buttonName, eventName, shortcut, func) {
    buttonName = buttonName && buttonName.id || buttonName;

    // 暂存
    this.saved && this.list.push([buttonName, eventName, shortcut, func]);

    if (typeof shortcut == 'string') shortcut = [shortcut.toLowerCase()];
    for (var i = 0, len = shortcut.length; i < len; i++) {
        var arr = /(shift|ctrl|alt)\+([a-z0-9]+)/i.exec(shortcut[i]);
        if (!arr && shortcut[i] != 'enter') return;
        if (shortcut[i] == 'enter') arr = ['', '', 'enter'];
        arr[1] = arr[1].toLowerCase();
        arr[2] = arr[2].toLowerCase();
        var _shortcut = {
            isShift:arr[1] == 'shift',
            isCtrl:arr[1] == 'ctrl',
            isAlt:arr[1] == 'alt',
            keyCode:arr[2] == 'enter' ? 13 : arr[2].charCodeAt(0)
        };
        if (_shortcut.keyCode >= 97 && _shortcut.keyCode <= 121) {
            _shortcut.keyCode -= 32;
        }//alert(Dumper(_shortcut));

        // 判断是否重复注册
        var hasAttach = false;
        for (var item in DomEvent.events) {
            if (!item[1]) continue;
            if (item[1].toString() == func.toString()
                && item[0].isShift == _shortcut.isShift
                && item[0].isCtrl == _shortcut.isCtrl
                && item[0].isAlt == _shortcut.isAlt
                && item[0].keyCode == _shortcut.key) {
                ///
                hasAttach = true;
                break;
            }
        }
        //alert(Dumper(DomEvent.events) + '\n\n' + Dumper([_shortcut, func, buttonName]) + '\n\n' + Dumper(shortcut) + ' ' + arr[1]);
        // 快捷事件
        if (!hasAttach)
            DomEvent.events[buttonName + '_' + Global.Random()] = [_shortcut, func, buttonName];
    }

    // 按钮事件,并防止二次提交
    var but = buttonName && $(buttonName);
    but && Events.AttachEvent(but, eventName, func);
}

/// 帖子内容脚本调用
// 复制
function ubbCopy (th) {
    var txt = th.parentNode.parentNode.getElementsByTagName('code')[0].innerHTML;
    txt = txt.replace(/&lt;/g, '<');
    txt = txt.replace(/&gt;/g, '>');
    txt = txt.replace(/&nbsp;/g, ' ');
    txt = txt.replace(/&amp;/g, '&');
    copyToClipboard(txt);
}
// 运行
function ubbRun (th) {
    var txt = th.parentNode.parentNode.getElementsByTagName('code')[0].innerHTML;
    var win = window.open('about:blank');
    txt = txt.replace(/&lt;/g, '<');
    txt = txt.replace(/&gt;/g, '>');
    txt = txt.replace(/&amp;/g, '&');
    win.document.open();
    win.document.write(txt);
    win.document.close();
}

// 用户中心,隐藏菜单
function hideMenu (menu) {
    Events.AttachEvent(menu, 'click', function () {
        this.style.visibility = 'hidden';
        Events.AttachEvent(this, 'click', arguments.callee);
    });
}

// 用户中心,左边菜单项选中状态
function selectedMenuItem () {
    var sidebar = $('sidebar_content');
    if (!sidebar) return;
    var links = sidebar.getElementsByTagName('a');
    for (var i = links.length - 1; i > -1; i--) {
        if (location.href.indexOf(links[i].href) > -1) {
            CSS.AddClass(links[i], 'current');
            break;
        }
    }
}

// 设置提交按钮为可用
function undisabledSubmit () {
    var inputs = document.getElementsByTagName('input');
    for (var i = 0, len = inputs.length; i < len; i++) {
        if (inputs[i].type == 'submit') inputs[i].disabled = false;
    }
}

// post提交到新地址
function postTo (url) {
    document.forms[0].action = url;
    document.forms[0].submit();
}

// 跳转到新地址
function go (url) {
    location.href = url;
}

// reload
/* 
  地址一样
  1. 没有锚点,location.href
  2. 有锚点
*/
function Reload (url) {
    var href = Url.ClearAnchor(location.href);
    var arr = /^http(?:s)?:\/\/[^\/]+\:(\d+)\//i.exec(href);
    var _url = '://' + location.host + (arr && arr[1] ? ':' + arr[1] : '') + Url.ClearAnchor(url);

    // 地址一致
    if (href == 'http' + _url || href == 'https' + _url) {
        // url没有锚点
        if (url.indexOf('#') == -1) {
            location.href = url;
        }
        // url有锚点
        else {
            location.href = '/go.aspx?url=' + encodeURIComponent(url);
        }
    }
    // 地址不一致
    else {
        location.href = url;
    }
}

// 开启IM
function QQChat (qq) {
    openFile('Tencent://Message/?menu=yes&exe=&uin=' + qq + '&websiteName=bbsmax&info=');
}
function WLMChat (msn) {
    openFile('msnim:chat?contact=' + msn);
}
function WangWang (id) {
    openFile('wangwang:SendIM?' + id + '&uid_t=' + id);
}
function Skype (id) {
    openFile('skype:' + id + '?call');
}
function Gtalk (gmail) {
    openFile('gtalk:chat?jid=' + gmail);
}
function openFile (url) {
    var self = arguments.callee;
    var frame = self.frame;
    if (!frame) {
        frame = self.frame = oNode.CreateIframe('im_' + Global.Random());
        oNode.AddNode(frame);
        frame.style.display = 'none';
    }
    window.open(url, frame.name);
}

/*
  onload
*/
Events.AttachEvent(window, 'load', function () {
    if(typeof(pageID)!='undefined')
        pageID = pageID.toLowerCase();
    //blockMenu();
    DomEvent();
    selectedMenuItem();
    undisabledSubmit();
    ///
    //Url.GotoAnchor(Url.GetAnchor());
});


// 在线用户信息
onlineUserTip.xOffset = 2;
onlineUserTip.yOffset = 2;
onlineUserTip.Event = false;
onlineUserTip.flow = null;
onlineUserTip.hasOver = false;
onlineUserTip.nonHideUser = false;
onlineUserTip.interval = 0;
onlineUserTip.delay = 200;
onlineUserTip.userLoading = false;
onlineUserTip.userLoaded = false;
onlineUserTip.guestLoading = false;
onlineUserTip.guestLoaded = false;
function onlineUserTip (th, id) {
    var isUser = false, isGuest = false;
    var _id = id;

    if (/.{32}/.test(id)) {
        isGuest = true;
        id = 'online_guest_' + id;
    }
    else {
        isUser = true;
        id = 'online_user_' + id;
    }

    // loading user
    if (isUser && !onlineUserTip.userLoading) {
        onlineUserTip.userLoading = true;
        AjaxRequest.Render('', 'ap_online_users', function () {
            onlineUserTip.userLoaded = true;
            onlineUserTip(th, _id);
        });
    }
    // loading guest
    if (isGuest && !onlineUserTip.guestLoading) {
        onlineUserTip.guestLoading = true;
        AjaxRequest.Render('', 'ap_online_guests', function () {
            onlineUserTip.guestLoaded = true;
            onlineUserTip(th, _id);
        });
    }

    if (!onlineUserTip.userLoaded && isUser || !onlineUserTip.guestLoaded && isGuest)
        return;

    var flow = onlineUserTip.flow;
    if (!flow) {
        flow = onlineUserTip.flow = PopUp.Panel($('online_tip'));
        PopUp.AddPopUp(flow);
        PopUp.AddMask(flow);

        flow.onmouseover = function () {clearTimeout(onlineUserTip.interval)};
        flow.onmouseout = function () {
            onlineUserTip.interval = setTimeout(function () {
                    onlineUserTip.hide(flow);
            }, onlineUserTip.delay)
        };
    }
    
    var obj = $(id);
    if (!obj) return;
    if (isUser && !obj.isChange) {
        obj.isChange = true;
        var userName = obj.getElementsByTagName('li')[0];
        oNode.RemoveNode(userName);
        if (userName.innerHTML.Trim() != '') {
            obj.isShow = true;
            var li = oNode.CreateNode('li');
            oNode.AddNode(li, obj);
            CSS.AddClass(li, 'member-info-buttons');
            li.innerHTML = $('online_tip_btn').innerHTML.replace(/\{nickname\}/gi, userName.innerHTML);
            
            var info = li.getElementsByTagName('a')[2];
            if (info) info.href = info.href.replace(/userid=\d+/i, 'UserID=' + _id);
            else li.style.display = 'none';
        }
    }
    onlineUserTip.nonHideUser = isUser && obj.isShow;
    flow.getElementsByTagName('ul')[0].innerHTML = obj.innerHTML;

    if (!th.isCreate) {
        th.isCreate = true;

        th.onmouseout = function () {
            onlineUserTip.hasOver = false;
            if (onlineUserTip.nonHideUser) {
                onlineUserTip.interval = setTimeout(function () {
                    onlineUserTip.hide(flow);
                }, onlineUserTip.delay);
            }
            else {
                onlineUserTip.hide(flow);
            }
        };
    }
    onlineUserTip.hasOver = true;
    onlineUserTip.hasShow = false;
    clearTimeout(onlineUserTip.interval);
    
    if (!onlineUserTip.Event) {
        onlineUserTip.Event = true;
        flow.style.display = '';
        Events.AttachEvent(document, 'mousemove', function (e) {
            if (!onlineUserTip.hasOver) return;
            var obj = $EO(e);
            var isOver = false;
            while (obj) {
                if (obj.onmouseover && /onlineUserTip/.test(obj.onmouseover.toString())) {
                    isOver = true;
                    break;
                }
                obj = obj.parentNode;
            }
            if (!isOver) return;
            onlineUserTip.hasShow || onlineUserTip.show(e, onlineUserTip.flow);
            if (onlineUserTip.nonHideUser)
                onlineUserTip.hasShow = true;
        });
    }
}
onlineUserTip.show = function (e, flow) {
    var x = e.clientX + onlineUserTip.xOffset;
    var y = e.clientY + onlineUserTip.yOffset;
    var W = Global.GetClientWidth();
    var H = Global.GetClientHeight();
    var w = flow.offsetWidth;
    var h = flow.offsetHeight;
    if (x + w > W) {
        x = e.clientX - w - onlineUserTip.xOffset;
    }
    if (x < 0) x = 0;
    if (y + h > H) {
        y = e.clientY - h - onlineUserTip.yOffset;
    }
    if (y < 0) y = 0;
    x += Global.GetScrollLeft();
    y += Global.GetScrollTop();
    PopUp.SetXY(flow, x, y);
};
onlineUserTip.hide = function (flow) {
    flow.style.left = '-1000px';

⌨️ 快捷键说明

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