www.6766.comJavaScript常用脚本汇总_javascript技巧_脚本之家

用原生JS对AJAX做简单封装

上面代码的作用是:只能输入0-9的数字和小数点。

复制代码 代码如下:/*** JavaScript
JSONP Library v0.3* Copyright 2011 snandy* QQ群: 34580561* Date:
2011-04-26* *
增加对请求失败的处理,虽然这个功能用处不太大,但研究了各个浏览器下script的差异性*
1, IE6/7/8 支持script的onreadystatechange事件* 2, IE9/10
支持script的onload和onreadystatechange事件* 3,
Firefox/Safari/Chrome/Opera支持script的onload事件* 4, IE6/7/8/Opera
不支持script的onerror事件; IE9/10/Firefox/Safari/Chrome支持* 5,
Opera虽然不支持onreadystatechange事件,但其具有readyState属性.这点甚是神奇*
6,
用IE9和IETester测试IE6/7/8,其readyState总为loading,loaded。没出现过complete。*
* 最后的实现思路:* 1, IE9/Firefox/Safari/Chrome
成功回调使用onload事件,错误回调使用onerror事件* 2, Opera
成功回调也使用onload事件(它压根不支持onreadystatechange),由于其不支持onerror,这里使用了延迟处理。*
即等待与成功回调success,success后标志位done置为true。failure则不会执行,否则执行。*
这里延迟的时间取值很有技巧,之前取2秒,在公司测试没问题。但回家用3G无线网络后发现即使所引用的js文件存在,但由于*
网速过慢,failure还是先执行了,后执行了success。所以这里取5秒是比较合理的。当然也不是绝对的。*
3, IE6/7/8
成功回调使用onreadystatechange事件,错误回调几乎是很难实现的。也是最有技术含量的。*
参考了
使用nextSibling,发现不能实现。*
令人恶心的是,即使请求的资源文件不存在。它的readyState也会经历“loaded”状态。这样你就没法区分请求成功或失败。*
怕它了,最后使用前后台一起协调的机制解决最后的这个难题。无论请求成功或失败都让其调用callback。*
此时已经将区别成功与失败的逻辑放到了callback中,如果后台没有返回jsonp则调用failure,否则调用success。*
* * 接口* Sjax.load(url, {* data // 请求参数 * success //
请求成功回调函数* failure // 请求失败回调函数* scope //
回调函数执行上下文* timestamp // 是否加时间戳* });* */Sjax
=function{ var ie678 = !-[1,], opera = win.opera, doc = win.document,
head = doc.getElementsByTagName[0], timeout = 3000, done = false;
function _serialize{ var a = [], key, val; for{ val = obj[key];
if(val.constructor == Array){ for(var i=0,len=val.length;i

复制代码 代码如下:function toThousands {
var num = , result = ”; while { result = ‘,’ + num.slice + result; num
= num.slice; } if { result = num + result; } return result;}

复制代码
代码如下://保存domReady的事件队列 eventQueue = [];
//判断DOM是否加载完毕 isReady = false; //判断DOMReady是否绑定 isBind =
false; /*执行domReady() * *@param {function} *@execute
将事件处理程序压入事件队列,并绑定DOMContentLoaded *
如果DOM加载已经完成,则立即执行 *@caller */ function domReady {
fn.call; } else{ eventQueue.push; }; /*domReady事件绑定 * *@param
null *@execute 现代浏览器通过addEvListener绑定DOMContentLoaded,包括ie9+
ie6-8通过判断doScroll判断DOM是否加载完毕 *@caller domReady() */
function bindReady return; if return; isBind = true; if
(window.addEventListener) {
document.addEventListener(‘DOMContentLoaded’,execFn,false); } else if {
doScroll(); }; }; /*www.6766.com,doScroll判断ie6-8的DOM是否加载完成 * *@param null
*@execute doScroll判断DOM是否加载完成 *@caller bindReady() */
function doScroll(){ try{ document.documentElement.doScroll; } catch{
return setTimeout; }; execFn(); }; /*执行事件队列 * *@param null
*@execute 循环执行队列中的事件处理程序 *@caller bindReady() */
function execFn { isReady = true; for (var i = 0; i <
eventQueue.length; i++) { eventQueue[i].call; }; eventQueue = []; };
}; //js文件1 domReady; //js文件2 domReady;
//注意,如果是异步加载的js就不要绑定domReady方法,不然函数不会执行,
//因为异步加载的js下载之前,DOMContentLoaded已经触发,addEventListener执行时已经监听不到了

封装DOMContentLoaded事件

jquery限制文本框只能输入数字,兼容IE、chrome、FF,示例代码如下:

然后,我们来写核心函数。

jquery限制文本框只能输入数字

复制代码
代码如下:$.keyup.val.replace.bind{ //CTR+V事件处理
$.val().replace.css(“ime-mode”, “disabled”); //CSS设置输入法不可用

跨域请求之JSONP

复制代码 代码如下:Sjax.load(‘jsonp66.js’,
{ success : function}, failure : function;

最后,说明一下此函数的用法。

以上就是本文给大家分享的javascript常用脚本了,希望大家能够喜欢。

复制代码 代码如下:var ajax = function {
// 初始化 //type参数,可选 var type = conf.type; //url参数,必填 var url
= conf.url; //data参数可选,只有在post请求时需要 var data = conf.data;
//datatype参数可选 var dataType = conf.dataType; //回调函数可选 var
success = conf.success; if { //type参数可选,默认为get type = “get”; }
if { //dataType参数可选,默认为text dataType = “text”; } //
创建ajax引擎对象 var xhr = createAjax(); // 打开 xhr.open; // 发送 if
(type == “GET” || type == “get”) { xhr.send; } else if (type == “POST”
|| type == “post”) { xhr.setRequestHeader(“content-type”,
“application/x-www-form-urlencoded”); xhr.send; } xhr.onreadystatechange
= function() { if (xhr.readyState == 4 && xhr.status == 200) {
if(dataType == “text”||dataType==”TEXT”) { if { //普通文本 success; }
}else if(dataType==”xml”||dataType==”XML”) { if { //接收xml文档 success;
} }else if(dataType==”json”||dataType==”JSON”) { if {
//将json字符串转换为js对象 success(eval(“”)); } } } };};

首先,我们需要xhr对象。这对我们来说不难,封装成一个函数。

千分位格式化

上面的代码的作用是:只能输入大于0的正整数。

复制代码 代码如下: ajax({ type:”post”,
url:”test.jsp”, data:”name=dipoo&info=good”, dataType:”json”,
success:function{ alert;

复制代码 代码如下:$.keyup{
//keyup事件处理 $.val().replace.bind{ //CTR+V事件处理
$.val().replace.css(“ime-mode”, “disabled”); //CSS设置输入法不可用

复制代码 代码如下:var createAjax =
function() { var xhr = null; try { //IE系列浏览器 xhr = new
ActiveXObject; } catch { try { //非IE浏览器 xhr = new XMLHttpRequest {
window.alert; } } return xhr;};

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图