随笔分类 -  javascript and ajax

JavaScript是一门很有趣的语言,每取得一点更深入的理解,我便以为自己已经彻悟。从最初的函数使用、面向对象、原型继承、函数对象到后来作用域链、functional、预解析、表达式解析机制、动态语言特性,每在此道路上前进一步,我都曾以为自己到达了高手境界。然而,事实上是,简单的语法也能承载深刻的思想。巧妙的设计让JavaScript成为一门兼有元类(meta-class)、类(class-based)、原型(prototype-based)三种面向对象特性和functional特性的动态语言。回忆起来,对这样的语言,说我已到达高手的境界,是十分可笑的。
再谈new functionName
摘要:前面有转载玉伯的 一篇关于 new functionName 猜想的blog。 newFn() 的实际构造过程可以等价为以下伪代码:var o = {__proto__: Fn.prototype};Fn.apply(o);return o;但是有这么一个问题因为 整个 blog 的论点都是建立在,使用一个规规矩矩的构造函数的情况下。你知道的,js是弱类型语言,对于任何数据,都缺乏强制的类型检测,那么,如果function Dog(name) { this.name = name; Dog.prototype = { shout: function() { alert... 阅读全文
posted @ 2013-01-31 18:54 落叶满长沙 阅读(411) 评论(0) 推荐(0)
websocket终成标准
摘要:WebSocket是用于浏览器或其他客户端,建立与web服务器的双向、可靠通信渠道的协议。与其他方法相比的最大好处是,不需要使用多个XML HTTP请求来完成,或者是必须让一个正常的HTTP链接尽可能长时间的保持Open. 历时11年,WebSocket终于被批准成为IETF的建议标准:RFC6455.其前身是WHATWG (Web Hypertext Application Technology Working Group)的工作。而Web Socket的API,是W3C的工作。 WebSocket可以只打开一个到服务器的链接,并且在此链接上交换信息。其优势在于减少了传统方法的复杂性,提.. 阅读全文
posted @ 2012-09-09 10:42 落叶满长沙 阅读(1320) 评论(0) 推荐(0)
dom 的 contains方法
摘要:以前写弹出层的时候,有用过,就是查询 a , b 两元素是否有包含关系。回顾记录一下。比如一个弹出层,a 然后 点击除开a以外的任何地方就要把a给关闭了。那么,首先应该是给body添加一个click的处理函数用来接收事件的冒泡。然后 在这个处理函数内event = event? event: window.eventvar obj = event.srcElement ? event.srcElement:event.target; 这个obj 就是你点击的那个对象了然后,然后怎么判断?obj 就是a 以外的地方呢?两种方法,1,判断你的层在obj的parentNode的链里面,,或者就是ob 阅读全文
posted @ 2012-06-20 11:14 落叶满长沙 阅读(2815) 评论(0) 推荐(0)
jq的getJSON 怎么做jsonp
摘要:现在做跨域,说不会jsonp都不好意思。 那么getJSON 是可以做jsonp的getJSON("xx.com?jsoncallback=?",function(){ xx00 }); jq只有在url里发现有 =? 的时候,才会启动jsonp模式,然后把后面的回调函数赋 给 一个 临时 的全局变量 jsonp+new DATE(); 然后用这个全局变量替换了 =? 中的 ?然后发送请求。 注意,jsoncallback=? 这里的jsoncallback不是必须的,可以自定义你也可以是_callback=? ,唯一必须的是 =? 这个,jq只有在url 里面发现了 这个 阅读全文
posted @ 2012-06-11 17:38 落叶满长沙 阅读(776) 评论(0) 推荐(0)
也谈下javascript中的 with
摘要:我们知道javascript是通过语句来构造代码的组织结构的,这种组织结构的基本形式是“代码分块”,而代码分块带来的语法效果,是信息隐藏。一般来说,所谓信息隐藏指的是变量或者成员的可见性问题,而这个可见性的区间,则依赖语法的称述,这被称作作用域,这是对作用域的一种通俗描述,作用域包括语法作用域和变量作用域两个部分,这两个部分是一个语言中,模块化层次的全部体现。javascript中的语法作用域有四种,大部分被严格限制在“语句/批语句”作用域内,with就在其中。其实如果代码可读性好的代码,with是个非常有用的语句,但是目前很多网上文章包括 犀牛书,都不推荐使用with,这是为什么。至少我是经 阅读全文
posted @ 2012-05-23 16:32 落叶满长沙 阅读(1241) 评论(3) 推荐(1)
关于内网linux系统如果安装nodejs,npm,express,mongodb,forever等
摘要:内网的linux系统要安装nodejs以及express等系列的框架,因为系统是局域网和互联网是物理隔离的,所以,没法像官网的安装教程那样直接install了,只能手动安装,这里已经我们自己的linux 系统suse10 为例:1 Nodejs环境搭建1.1 安装1) 从官网http://www.nodejs.org下载软件压缩包2) 安装命令tar -zxvf node-v0.6.15.tar.gz./configuremakemake install3) 默认安装目录/usr/local/bin//usr/local/lib/1.2 安装时提示openssl not found的问题解决办 阅读全文
posted @ 2012-04-27 09:08 落叶满长沙 阅读(2560) 评论(0) 推荐(0)
在SuSE10上源码编译安装nodejs时遇到的一些问题(转)
摘要:在SuSE10上,源码编译安装nodejs0.6.10,使用./configure --prefix=/usr/local/, 提示:Checking for openssl: not foundChecking for function SSL_library_init: not foundChecking for header openssl/crypto.h: not found/usr/local/src/node-v0.6.10/wscript:374: error: Could not autodetect OpenSSL support. Make sure OpenSSL de 阅读全文
posted @ 2012-04-24 17:43 落叶满长沙 阅读(1340) 评论(0) 推荐(0)
读 requirejs 相关细则
摘要:一、requirejs初始化执行流程1 if (isBrowser)2 req(cfg)3 context.configure()4 context.require(cfg.deps || [], cfg.callback)5 resume()6 req.load7 req.attach(url, context, moduleName);二、require()细节1 可通过require.config方法配置baseUrl2 文件名一般不用加".js",如果有".js"文件一定是与引入requirejs的html在同一个目录三、够狠,一个newCont 阅读全文
posted @ 2012-04-13 17:57 落叶满长沙 阅读(655) 评论(1) 推荐(0)
js模块化开发---js大项目代码组织和多人协作的解决之道
摘要:Js开发在整个行业的现状主要的有两点ž维护成本高ž多人协作项目的困境Js项目维护成本过高经历过10年的ie统治时期的浏览器世界一成不变,和06年开始ajax的兴起带动垂死的javascript的复兴,浏览器市场也开始翻天覆地的快速变化,排版引擎和js脚本引擎开始得到不断的优化,js的执行效率不断的得到提高,但是………..我们的js一直没变过. 现在所有的主流 Web 浏览器都遵守 ECMA-262 第三版,即实现的是JavaScript 1.5版 时间 2000ž那么,js依然是当年的js,浏览器和对web的需求早已经不复当年。当年那个为做表单验证而生的js语言,如今承担的是复杂的界面ui和交 阅读全文
posted @ 2012-04-10 11:44 落叶满长沙 阅读(9988) 评论(1) 推荐(5)
用canvas 来实现一个菊花
摘要:关于canvas的save()和restore(),前面一直以为canvas的画面也会保存,然后restore后把画面恢复,那么就这样把自己给绕进去了,那么save和restore之间的操作还有何意义??? 摸爬滚打后理解了save 保存的是画布的坐标旋转缩放 以及fillstyle 和 其他等等的相关属性,已经画好了的图画不在之列。做了个菊花 和 前面做的图片旋转移动 的 demo 来巩固下。依然先看效果---------------------代码分割线--------------------------------------------------------------------- 阅读全文
posted @ 2012-04-06 11:18 落叶满长沙 阅读(808) 评论(0) 推荐(0)
canvas 使用 图片 切片的时候 在chrome 下 要注意的 一点
摘要:像这样,你很可能切片的数据不对 导致 切片的范围 超出了 图片本身的范围,那么在chrome下,这个切片drawImage的时候 会是什么都没有,和没有drawImage一样,chrome默认你啥都没找到,这点在开发中是需要留意下的 阅读全文
posted @ 2012-03-29 11:35 落叶满长沙 阅读(579) 评论(0) 推荐(0)
原型上的方法写属性的一个陷阱
摘要:我们都知道 , 对象的属性读写在原型链上操作方式。我们先来回顾下。值的赋予对象的命名属性可以通过为该命名属性赋值来创建,或重新赋值。即,对于:var objectRef = new Object();//创建一个普通的 JavaScript 对象。可以通过下面语句来创建名为 “testNumber” 的属性:objectRef.testNumber = 5;/* – 或- */objectRef["testNumber"] = 5;在赋值之前,对象中没有“testNumber” 属性,但在赋值后,则创建一个属性。之后的任何赋值语句都不需要再创建这个属性,而只会重新设置它的值 阅读全文
posted @ 2012-03-29 11:13 落叶满长沙 阅读(387) 评论(1) 推荐(0)
requirejs实现对动态combo的支持
摘要:combo是为了减少请求数, 但是全combo成一个不好, 最佳实践还是合理拆分成几个文件, 真实环境里能减小加载总时间, 并在一定程度上提高 浏览器端缓存的利用率; 现在seajs的例子里都是用的config的preload来支持服务器端combo, 但是有个问题: seajs要等preload数组里所有项目都加载完, 才会开始处理具体的seajs.use调用, 比如: seajs.config({ preload: ['m1', 'm2+m3'] });seajs.use(['m1'], function(m1) { /*位置1*/ }); 阅读全文
posted @ 2012-03-15 18:03 落叶满长沙 阅读(3570) 评论(1) 推荐(3)
关于国内html5现状吐点槽
摘要:html5,喊啊喊,喊的好久了,我们一帮jser也在后面摇旗呐喊了多年,但是事情总是很缓慢的在往前发展,但是毕竟它还是在发展的。奶奶的。从n久之前,已经不只n遍下过决心要学习要系统的学习html5了,逛各大网站,翻w3c文档,但是每次都是热火一会又放下了,因为我的工作是要兼容ie6的,国内的ie6是占了50%以上市场份额的,于是,每次给自己鼓起了百倍的信心要学htm5的先进生产力,但是不久又还是偃旗息鼓的回去捡起被我吐槽了一百遍一百遍的ie6继续过着jser的刀耕火种的日子.........前面和武汉的一同事聊html5,我一直以为我这么久的在关注html5的发展,应该对其还是有一定了解的,探 阅读全文
posted @ 2012-03-08 15:17 落叶满长沙 阅读(1604) 评论(0) 推荐(0)
贡献一个连jquery都觉的大的时候可以用的 js库
摘要:在一些很小的项目里,连用jquery都还觉的大的时候,你就可以用我的这个库了。一个库或者框架,是应需求而生的,当你的项目实际上只需要简单的一个好用的选择器 一个ajax 封装 一个兼容的事件封装的时候,你当然就会觉的jquery都太臃肿了,好吧,我那jquery剥离了这几个功能出来,本来我是只剥离jquery的domready 的, 但是发现这个东西牵扯到了jquery的事件模型的封装,那我就把jquery的事件也一并的剥离了下来,然后自己写了一个ajax封装。ok,一个最简单的js开发库成型了。代码在下面: /* * 简易的开发js库 暂命名为 --- 呃没有命名 * $选择器,aj... 阅读全文
posted @ 2012-03-08 14:46 落叶满长沙 阅读(704) 评论(2) 推荐(0)
ie6的absolute元素width百分比设置的问题
摘要:<div style=”width:700px;height:700px;background:#00CC99″><div style=”background:#330066;width:500px;height:500px;”><div style=”float:left;background:#FF3366;”><div style=”width:300px;height:300px;”></div><div style=”width:100%;height:100%;background:red;position:abso 阅读全文
posted @ 2012-03-02 17:04 落叶满长沙 阅读(682) 评论(0) 推荐(0)
关于函数式的链式调用
摘要:jq的链式调用在n多的jq粉丝中广为赞叹,那么在原生js里是否也可以实现函数式的 链式调用呢?比如 add(1)(2)(3) 要得到6你会怎么样来设计这个add function呢,,,,,,,在"前端开发兵团" qq群(94936336) 的逍遥君武 给了这么一个 解决方案,很不错,可以看看function add(x){ x += +add || 0; add.valueOf = add.toString = function(){ return x } return add; } alert( add(1)(2)(3) )这个方法很巧妙的应用了js在 运算中的隐式类型 阅读全文
posted @ 2012-03-02 15:43 落叶满长沙 阅读(567) 评论(0) 推荐(1)
window.open不被拦截
摘要:经常有人用window.open()的时候被浏览器拦截了 比如btn.onclick=function(){ function aa (){ window.open("xxx"); } aa();}其实,如果你的window.open写在用户事件处理函数的当前作用域下,是不会的,只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。btn.onclick=function(){ window.open("xxx");}其实这样的代码是可行的不会有问题也可以代码可编写如下:var $E = YAHOO.ut 阅读全文
posted @ 2012-02-24 18:03 落叶满长沙 阅读(3921) 评论(0) 推荐(0)
json.js + jquery 在 ie7下 的 bug
摘要:因为jq只有个parseJSON,没有stringify,而在ie7下是没有支持原生window.JSON的,那么最好的选择是老道的json.js来和jq搭配了<script src='jquery.js'></script><script src='json.js'></script><div class='a'>nick</div><script> $(function(){ alert($(".a").html()) })</scr 阅读全文
posted @ 2012-02-21 09:52 落叶满长沙 阅读(966) 评论(0) 推荐(0)
function声明函数在浏览器中这么一个问题
摘要:先看这么一段代码(function(){ alert( myname() ); function myname(){ return "nick" }})();上面代码在各个浏览器里的运行结果是一致的,这是因为在javascript里面,用function 声明的函数是会在函数执行环境初期便构造完函数体,也可以说是一种预解析吧,于是,即便myname的声明代码在myname的执行后面,也是可以正确的执行的。但是我们这样修改下(function(){ alert( myname() ); if (true) { function myname(){ return "n 阅读全文
posted @ 2012-02-02 17:13 落叶满长沙 阅读(237) 评论(0) 推荐(0)