/**
* 包含通用公共方法的脚本,c为common的缩写
*/
if (!window.wd)
window.wd = {};
wd.c = {};
/*
* wd.c.oriClose = window.close;//原版的window.close方法
*
* wd.c.closeWindow = function() {//在IE7中,无提示关闭窗口的方法 top.oriOpener =
* top.opener;//保存原来的window.opener top.opener = null; top.open('', '_self');
* wd.c.oriClose(); }
*
* window.close=wd.c.closeWindow;//覆盖原版的window.close方法
*/
/** 通过NAME或ID获得页面元素的通用方法 * */
wd.c.g = function (nameOrId, // 要获得的DOM元素的name或ID
windowObj) { // 获得的DOM元素所属的window对象(可选参数,不填则默认为window)
if (!windowObj)
windowObj = window;
var rs = windowObj.document.getElementById(nameOrId);
if (!rs) // 如果上面获取不到对象,则采用下面的方法取得对象实例
rs = windowObj.document.getElementsByName(nameOrId)[0];
if (!rs) // 如果上面获取不到对象,则采用下面的方法取得对象实例
rs = windowObj.frames[nameOrId];
return rs;
}
/** 打印调信息的方法 * */
wd.c.debug = function (s) {
// 如果显示debug的窗口不存在,则初始化一个
if (!window.debugWindow || window.debugWindow.closed) {
window.debugWindow = window.open();
// 如果本窗口关闭则debug窗口也关闭
window.onbeforeunload = function () {
window.debugWindow.close();
};
}
window.debugWindow.document.write(s);
window.debugWindow.document.write('
');
}
/**
* 为DOM元素targetElem的evenName事件追加事件触发时回调函数activeFun
* 通过此函数为DOM元素绑定监听事件的好处在于:可以把新添加的监听函数与DOM元素
* 已绑定的旧的监听函数合并成为新的监听函数,而不会覆盖DOM元素旧的同名监听函数。
*/
wd.c.addEventListener = function (targetElem, // 需绑定监听事件的DOM元素
eventName, // 事件名称,如:onclick
activeFun) { // 事件触发的回调函数
// DOM元素原来的监听事件
var oriListener = targetElem[eventName];
if (oriListener) { // 如果原来已经存在同名的监听事件了
targetElem[eventName] = function () {
oriListener.call(targetElem); // 调用原来已经存在监听方法
return activeFun.call(targetElem); // 调用新添加的监听方法
}
} else {
targetElem[eventName] = function () {
return activeFun.call(targetElem); // 调用新添加的监听方法
}
}
}
// 把json转化为字符串格式
wd.c.O2String = function (O) {
// return JSON.stringify(jsonobj);
var S = [];
var J = "";
if (Object.prototype.toString.apply(O) === "[object Array]") {
for (var i = 0; i < O.length; i++) {
S.push(O2String(O[i]));
}
J = "[" + S.join(",") + "]";
} else {
if (Object.prototype.toString.apply(O) === "[object Date]") {
J = "new Date(" + O.getTime() + ")";
} else {
if (Object.prototype.toString.apply(O) === "[object RegExp]" || Object.prototype.toString.apply(O) === "[object Function]") {
J = O.toString();
} else {
if (Object.prototype.toString.apply(O) === "[object Object]") {
for (var i in O) {
O[i] = typeof (O[i]) == "string" ? "\"" + O[i] + "\"" : (typeof (O[i]) === "object" ? O2String(O[i]) : O[i]);
S.push(i + ":" + O[i]);
}
J = "{" + S.join(",") + "}";
}
}
}
}
return J;
};
// 获得传入的对象的e的坐标、宽高,保存到一个对象中并返回
wd.c.getAbsPoint = function (e) {
try {
var x = e.offsetLeft;
var y = e.offsetTop;
var w = e.offsetWidth;
var h = e.offsetHeight;
/**
* OffsetParent为从中计算偏移量的元素。 如果某个元素的父级或此元素层次结构中的其他元素使用相对或绝对定位, 则
* OffsetParent 将成为当前元素嵌套到的第一个相对或绝对定位元素。如果当前元素以上的任何元素都不是绝对 或相对定位的,则
* OffsetParent 将是文档的 BODY 标记。
*
* obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。 obj.offsetLeft 指 obj
* 距离左方或上层控件的位置,整型,单位像素。
*
* offsetTop与offsetLeft均为相对偏移量,但是下面不断地拿offsetParent的偏移量来累加,
* 直至拿到offsetParent为body之后,就没有offsetParent了,此时循环才终止。
* 最终计算出来的x,y为e相对body的绝对坐标。
*/
while (e = e.offsetParent) { // 只要对象的offsetParent存在,则继续累加XY,
x += e.offsetLeft;
y += e.offsetTop;
}
return {
"x": x,
"y": y,
"w": w,
"h": h
};
} catch (e) {
if (this.debug)
alert('方法getAbsPoint执行异常:' + e);
}
};
// var jb51 =new function() {
// dom = [];
// dom.isReady = false;
// dom.isFunction = function(obj) {
// return Object.prototype.toString.call(obj) === "[object Function]";
// }
// dom.Ready = function(fn) {
// dom.initReady();
// //如果没有建成DOM树,则走第二步,存储起来一起杀
// if (dom.isFunction(fn)) {
// if (dom.isReady) {
// fn();
// //如果已经建成DOM,则来一个杀一个
// } else {
// dom.push(fn);
// //存储加载事件
// }
// }
// }
// dom.fireReady = function() {
// if (dom.isReady) return;
// dom.isReady = true;
// for (var i = 0, n = dom.length; i < n; i++) {
// var fn = dom[i];
// fn();
// }
// dom.length = 0;
// //清空事件
// }
// dom.initReady = function() {
// if (document.addEventListener) {
// document.addEventListener("DOMContentLoaded", function() {
// document.removeEventListener("DOMContentLoaded", arguments.callee, false);
// //清除加载函数
// dom.fireReady();
// },
// false);
// } else {
// if (document.getElementById) {
// document.write("