JS处理前台页面的所有异常

/// <reference path="../../Scripts/jquery-1.4.1-vsdoc.js" />

/// <reference path="yzg.prototype.js" />

/*

作者 : 颜佐光

时间 : 2012-4-5

Email : [email protected]

备注 : 本JS为颜佐光所编写,可以用于任何场景,也可以更改代码,但是不能更改或者去掉作者的名字和备注,否则将追究法律责任。

*/

(function ($) {

/***************************  start 核心框架处理函数  ***************************************/

function Throw(name, message, info) {

if (typeof message == "undefined") { message = name; name = ""; }

name = name || "异常信息";

message = message || "发生未知错误,请联系开发人员";

var err = new Error();

err.name = name;

err.message = message;

err.info = info;

throw err;

}

function NameSpace(base, path, obj) {

if (typeof base == "string" || typeof base == "number") {

obj = path; path = base, base = undefined;

}

if (typeof base == "undefined") {

base = window;

}

//将路径拆分为命名空间数组

var paths = (typeof path == "string") ? path.split(".") : [path];

//设置默认的命名空间为window

var nameSpace = base;

//设置已经处理过的命名空间路径

var handlePaths = [];

//循环处理路径中的每个节点

while (paths.length > 0) {

//提取该命名空间的单个节点名称

var name = paths.shift();

//验证是否已经存在对象,存在则拿历史对象处理(当路径结束时对源对象进行扩展),不存在则新建立对象(当路径结束时等于传入的对象)

if (typeof nameSpace[name] != "undefined") {

nameSpace = nameSpace[name];

if (obj && paths.length == 0 && typeof nameSpace == "object") {

$.extend(nameSpace, obj);

}

}

else {

if (obj && paths.length == 0) {

nameSpace = nameSpace[name] = obj;

}

else {

nameSpace = nameSpace[name] = {};

}

}

//将路径写入已经处理的路径

handlePaths.push(name);

//将数据类型不正确时抛出异常

if (typeof nameSpace != "object") {

Throw("路径错误", "发现路径[@path]已经存在数据,并且该数据的数据类型不为Object,不能进行命名空间扩展!".replace("@path", handlePaths.join(".")));

}

}

return nameSpace;

}

/***************************  end 核心框架处理函数  ***************************************/

/***************************  start 异常处理框架  ***************************************/

function ErrorQueue() {

this.errorQueue = [];

this.errorHandle = [];

this.Throw = function (name, message, info) {

try {

Throw(name, message, info);

} catch (e) {

var len = this.errorQueue.length;

this.errorQueue.push(e);

Throw("" + len);

}

};

this.Get = function (obj) {

var queueName = obj && (obj.message || obj);

var index = parseInt(queueName);

return this.errorQueue[index];

};

this.AddHandle = function (func) {

if (typeof func == "function") {

this.errorHandle.push(func);

}

};

this.DefaultHandle = function (name, msg, info, url, line) {

alert("Url : " + url + "\nLine : " + line + "\nName:\n" + name + "\nMsg:\n" + msg);

};

this.Handle = function (msg, url, line) {

var e = this.Get(msg);

var name = "异常信息";

var info = null;

if (e) {

msg = e.message;

name = e.name;

info = e.info;

}

try {

if (this.errorHandle.length == 0) {

throw new Error();

}

for (var i = 0; i < this.errorHandle.length; i++) {

var func = this.errorHandle[i];

if (typeof func == "function") {

func(name, msg, info, url, line);

}

}

} catch (ex) {

this.DefaultHandle(name, msg, info, url, line);

}

};

}

var error = new ErrorQueue();

window.onerror = function (msg, url, line) {

error.Handle.call(error, msg, url, line);

};

/***************************  end 异常处理框架  ***************************************/

var core = {

Throw: Throw,

NameSpace: NameSpace

};

NameSpace("yzg.core", core);

NameSpace("yzg.error", error);

})(jQuery);

/*

//调用示例

var error = yzg.error;

error.AddHandle(function (name, msg, info, url, line) {

$(document.body).append("<div>" + name + msg + info.id + "</div>");

});

error.Throw("高级异常", "异常信息", { id: "5" });

*/

JS处理前台页面的所有异常

时间: 2024-11-13 00:08:55

JS处理前台页面的所有异常的相关文章

js前台页面显示中文,后台存对应的value值实现

field: 'rightType', title: '权益类型', //width: 100, align: 'left', valign: 'top', sortable: true, formatter:rightTypeFormat 其实是采用了转换函数实现前台页面显示中文 //显示格式化,将value的值转换为中文 function rightTypeFormat(value, row, index) { if (value == "") { value = "请选

java工程积累——前台页面的统一校验

在项目中,我们面临这样的问题,就是如果在前台做抽象,大家想想后台代码的抽象,我们耳熟能详,但是前台的抽象,我们是如何做的呢?恐怕这个问题,如果是第一次抛给自己,自己也很惶恐,就是,我们不是对应一个业务写好一个页面吗?以前从来没有想过抽象,这里,我就要说,那是咱们最初级的方式,今天带大家一起见证先比较靠谱一种方式! 回顾 我们回顾下html编码的历程,在web1.0时代,我们面向的大多是静态页面,这时候,能够展示出来就好,由于网速的限制,电脑处理能力的约束,我们只能把什么都写在一起,但是随着时间的

前台页面优化全攻略(三)

经过前两篇文章的实践,你的网站加载速度一定有了非常明显的变化.能把实践跟到这篇文章的人想必一定是极客中的极客.如果你仍对网站的加载速度不满意,可以看看再尝试一下本文中几近疯狂的终极优化方案. 你可以对网站进行快速的优化,但网站日常的节食却很难.也许你已经花了很大的力气去优化你的CSS和JavaScript代码,但是你所做的努力马上又会因为老板或客户期望的新功能而付之东流.所以看来不论是人还是网页,减肥都贵在坚持. 这篇终极减肥方案可能不适合所有的网站,但是我相信它可以引起你对网页大小的重视. 1

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的! 介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很

前台页面优化全攻略(四)

通过前几篇文章,你应该已经掌握了很多优化网站的方法.现在你的网站加载速度已经很快了,但是你必须持续的监控你的网站,了解它的大小变化,要不然一段时间过去之后,它可能又成为了一个胖子. 如今每个页面平均已经达到1.7M,每年增长大概32%.你可以通过以下几个工具来查看你的网站是不是又在暴饮暴食,而且它们都是免费的. 1. Pingdom Pingdom是我喜欢的一个在线测试工具.它会揭露出所以你想知道的细节,你可以一清二楚的看到网站的现状:重量.加载速度.代码分析.性能评分.开发者建议,它还提供了一

DataGrid的增、删、改、查前台页面

公共js: 前台页面:

DHTML(动态HTML)前台页面技术介绍

一. DHTML(动态HTML)前台页面技术介绍 1. DHTML介绍 DHTML包含以四个方面的内容: (1).HTML 4.0 :超文本标记语言,网页文档的主体,以文本文件形式存储,由浏览器翻译后展现出丰富多彩的页面. (2).CSSL:客户端脚本语言,主要有JavaScript(JS),VBScript(VBS),JScript.Netscape主要支持JS,IE主要支持JS,VBS和JScript. (3).DOM:文档对象模型,是W3C推广的web技术标准之一,它将网页中的内容抽象成对

Springmvc+mybatis配置前台页面传递JSON串给后台接收。

前台页面js方法: $(document).ready(function(){ var saveDataAry=[]; var data1={"id":5,"name":"益生元","province":"西藏"}; var data2={"id":6,"name":"好爸爸","province":"拉萨"

JSP与Servlet之前台页面自动回复之实现

[JSP与Servlet之前台页面自动回复之实现] 该内容 来自于imooc的一个视屏教程.http://www.imooc.com/video/4562 就是当点击 发送 的时候把这个对话框内容添加上去,然后由Servlet接收对话框内容参数 并调Service把取得 自动回复 的内容再添加到对话框去. 至于具体的Service实现暂时不关心. 1.首先打开JSP页面找到发送对应的button,添加事件,取名为 send() 2.下一步就是实现这个 send() 方法,这需要用到 AJAX 参