📄 tool.js
字号:
/*
说明: 一个全局对象,它负责所有共用的方法和对象的创建工作
作者:吴少刚
项目组:商格里拉项目组
创建日期:2006-11-21
*/
var Tool = new Object();
Tool =
{
findPosX: function(obj){
var curleft = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
curleft += obj.offsetLeft;
obj = obj.offsetParent;
}
} else if (obj.x) curleft += obj.x;
return curleft;
},
findPosY: function(obj){
var curtop = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
curtop += obj.offsetTop;
obj = obj.offsetParent;
}
} else if (obj.y) curtop += obj.y;
return curtop;
},
/*
取得页面滚动的XY座标值
*/
getScrollXY: function()
{
var scrollY = 0 , scrollX = 0;
if (typeof window.pageYOffset != 'undefined') {
scrollX = window.pageXOffset;
scrollY = window.pageYOffset;
}
else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
scrollX = document.documentElement.scrollLeft;
scrollY = document.documentElement.scrollTop;
}
else if (typeof document.body != 'undefined') {
scrollX = document.body.scrollLeft;
scrollY = document.body.scrollTop;
}
return {left:scrollX,top:scrollY}
},
//取得浏览器版本
getBrowserType: function()
{
var _platform = null;
if (typeof(navigator) == "undefined")
{
return "not-browser";
}
var ua = navigator.userAgent.toLowerCase();
if (/msie/i.test(ua))
{
if (/msie 6/i.test(ua))
{
_platform = "ie6";
}
else if (/msie 5\.5/i.test(ua))
{
_platform = "ie5.5";
}
else if (/msie 5\.[^5]/i.test(ua))
{
_platform = "ie5";
}
else
{
_platform = "ie";
}
//isIE = true;
}
else if (/gecko/i.test(ua))
{
_platform = "moz";
// isMoz = true;
}
else if (/opera/i.test(ua))
{
_platform = "opera";
// isPoera = true;
}
else
{
_platform = "other";
//isOther = true;
}
return _platform;
},
/*事件处理类,所有相关的方法都要集中到这里
*/
EventUtil: {
/*为控件附加事件方法
oTarget:事件对象
sEventType:事件类型
fnhandler:事件处理器
*/
$ADE: function(oTarget,sEventType,fnHandler){
Event.observe(oTarget,sEventType,fnHandler,false);
},
/*移除控件的事件*/
$RME: function(oTarget,sEventType,fnHandler){
Event.stopObserving(oTarget,sEventType,fnHandler,false)
},
/* 格式化事件,由于事件的属性在DOM和IE中有所区别,这样可以把各属性统一起来
* 使用注意:必须在另一个能获得event对象引用的方法中使用
*/
FormatEvent: function(oEvent){
if(G.Browser.isIE)
{
oEvent.charCode = oEvent.type == "keypress"?oEvent.keyCode:0;
oEvent.eventPhase = 2;//此属性代表事件的阶段:0-捕获阶段,1-在目标上, 2-冒泡阶段
oEvent.isChar = (oEvent.charCode > 0);
oEvent.pageX = oEvent.clientX + document.body.scrollLeft;//shubiao相对于页面的X座标
oEvent.pageY = oEvent.clientY + document.body.scrollTop;
oEvent.preventDefault = function(){
this.returnValue = false;//阻止事件的默认行为.如事件oncontextmenu发生时,不让用户使用上下文菜单
};
if(oEvent.type == "mouseout"){
oEvent.relatedTarget = oEvent.toElement;//表示正在进入的元素
}else if(oEvent.type == "mouseover"){
oEvent.relatedTarget = oEvent.fromElement;//表示所离开的元素
}
oEvent.stopPropagation = function(){
this.cancelBubble = true; //阻止事件的冒泡
};
return oEvent;
}
},
getEvent: function(){
if(window.event){
return this.FormatEvent(window.event);//如果是IE事件则格式化事件
}else{
return G.EventUtil.getEvent.caller.arguments[0];
}
}
},
ProFile:{
//修复图片,增加效果
fixImage: function(img, width, height) {
if (!G.Browser.IsIE)
return;
var currentSrc = img.src;
var imgStyle = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + currentSrc + "', sizingMethod='scale')";
img.src = 'images/clearpixel.gif';
img.style.width = width + "px";
img.style.height = height + "px";
img.style.filter = imgStyle;
},
//检测是否是有效的图片文件
CheckValidPic:function(fileName,maxSize){
var str = "";
var thisPic = new Image();
thisPic.src = fileName;
if(thisPic.src=="") str = '请选择您要上传的图片';
else{
var picSize = thisPic.fileSize/1024;
if(picSize>maxSize) str = '上传的图片不要大于'+maxSize+'KB,您的图片有'+picSize+'KB';
else{
var sPic = thisPic.src.split(".");
var pf = sPic[sPic.length-1].toLowerCase();
str = '未知的图片格式!';
var picF = new Array("gif","jpg","jpeg","bmp");
for (var i=0;i<picF.length;i++){
if (pf==picF[i]){
str = "";
break;
}
}
}
}
return str;
},
//获得路径中的文件名
GetFileName:function(path)
{
var p = path.lastIndexOf("\\");
if(p>0)
return path = path.substr(p+1);
else
return path;
return "";
}
},
//把对象定位到指定的对象旁边显示,这两个参数对象都是DIV控件
//传入参数:CurObj=要定位的对象 TargetObj=目标对象 两个对象都是div对象
PosToFather: function(CurObj,TopTargetObj,leftTargetObj){
CurObj.style.position = "absolute";
CurObj.style.left = "0px";
CurObj.style.top = "0px";
if(isNaN(TopTargetObj))//typeof TopTargetObj != "string"&&typeof leftTargetObj!="string")
{
CurObj.style.left = (this.findPosX(leftTargetObj) + parseInt(leftTargetObj.clientWidth)) + 5 + "px";//可能要加菜单的客户端宽度
CurObj.style.top = (this.findPosY(TopTargetObj) - parseInt(TopTargetObj.clientHeight) - 3) + "px";
}
else
{
CurObj.style.left = leftTargetObj + "px";//可能要加菜单的客户端宽度
CurObj.style.top = TopTargetObj + "px";
}
},
//从JS文件载入JS对象,一般这种情况就是编辑模板类的载入
//传入参数:FileURL
LoadJSObj: function(TMPURL,FatherObj,SucessHandler)
{
//用ajax动态获取JS文件对象成功
//new Ajax.Request(TMPURL,{method:'get',parameters:null,onComplete:SucessHandler.bind(FatherObj)})
G_RequestObj.send(TMPURL,null,SucessHandler.bind(FatherObj),"get");
//URL,params,SuccessFunc,Method
} ,
//转换成HTML编码
htmlEncode: function(text) {
return text.replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
}
}
if(!browser)
var browser = Tool.getBrowserType();
//浏览器特性
Tool.Browser={
isIE: /ie.*/g.test(browser),//|(typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined'),
isMoz:/moz.*/g.test(browser),
isOpera:/opera.*/g.test(browser),
isFirefox:(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1),
isOther:/other.*/g.test(browser)
}
if (Tool.Browser.isMoz) {
HTMLElement.prototype.removeNode = function() {
this.parentNode.removeChild(this);
}
}
//页面上有关HTML的操作方法
Tool.HTMLPro = {
//把一段html代码插入指定的对象最后面
insertBottom:function(pObj, pContent)
{
var tElement = $(pObj);
if(tElement.insertAdjacentHTML)
{
if(tElement.tagName == 'TABLE')
{
//在表格中不能直接以HTML的方式把一行插入进到, 所以上面的方法不行
var tDiv=document.createElement("div"),tRows;
tDiv.innerHTML = "<table>"+pContent+"</table>"
tRows= tDiv.childNodes[0].tBodies[0].rows;
while(tRows.length>0){
pObj.tBodies[0].appendChild(tRows[0])
}
}else
{
tElement.insertAdjacentHTML('beforeEnd', pContent);
}
tRows = null;
tDiv = null;
}else
{
var tRange = tElement.ownerDocument.createRange();//系统对象
initializeRange(tRange,tElement);//初始化范围对象
insertContent([tRange.createContextualFragment(pContent)],tElement);
tRange = null;
}
},
initializeRange:function(pRange,pElement){
pRange.selectNodeContents(pElement);
pRange.collapse(pElement);
},
insertContent:function(fragments,pElement) {
fragments.each((function(fragment) {
pElement.appendChild(fragment);
}).bind(this));
}
}
//指定控件在页面上滑动
//原理:从原始宽度以加速度的形式到指定的值,
//然后再以指定的加速度的形式停止到指定的宽度
//传入参数:MoveObj=移动对象 ObjWidth= 对象的原始宽度,AcceleValue=开始递增的值
Tool.SlideObj = function(MoveObj,ObjWidth,AcceleValue)
{
MoveObj = $(MoveObj);
if(ObjWidth <= MoveObj.clientWidth)
{
window.clearTimeout();
MoveObj.style.width = ObjWidth + "px";
}
else
{
MoveObj.style.width = MoveObj.clientWidth + AcceleValue + "px";
window.setTimeout("G.SlideObj('"+MoveObj.id +"',"+ObjWidth+","+AcceleValue+")", 10);
}
}
//*********************************************页面上显示数据的方法**********************//
Tool.DisplayInfo = function(PageObj,Info){
var pageobj = $(PageObj);
pageobj.innerHTML = Info;
}
//传入参数:URL=请求地址,params=参数,Method=Get或POST asynchronous=同步异步,SuccessFunc=成功返回处理方法 FailureFunc=失败处理
Tool.send = function(URL,params,Method,asynchronous,SuccessFunc,FailureFunc){
if(FailureFunc == null)
{
FailureFunc = function(response){
alert('请求出错!');
}
}
//对成功后的统一再次转发,可以处理成功后的一些事情
var InsideSuccessFunc = function(response)
{
SuccessFunc(response);
}
if(typeof URL != "undefined"&&URL != "")
new Ajax.Request(URL,{method:Method,asynchronous:true,parameters:params,onComplete:InsideSuccessFunc,onFailure:FailureFunc});
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -