随笔分类 - JavaScript
JavaScript
摘要:/**良哥的*/function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), sumLen = aLen + bLen, result = [], ap = 0, bp = 0; while (result.length b[bp]){ result.push(b[bp++]); } else { ...
阅读全文
摘要:CORS(跨来源资源共享协议),高级浏览器(Chrome,firefox, opera, safir, ie10)在 XMLHttpRequest(AJAX) 中已经支持了这个协议。可以实现ajax跨域访问。(其实IE8也实现了,只不过是另外一个对象)由于是跨来源的的访问,标识HTTP状态的Cookie的使用有一些特别处理。Server Nodejs 代码res.setHeader('Access-Control-Allow-Origin', req.headers.origin);//注意这里不能使用 * res.setHeader('Access-Control-A
阅读全文
摘要:昨天遇到的问题使用ajax请求一个支持CORS的跨域页面(A),此页面返回302状态并且重新定向到页面(B)。此时ajax停止不前,并且触发 ajax onerror 事件。正确的相应应该是:ajax继续请求B页面,并且拿到B页面的返回值,触发onload事件。解决为 B 页面设置同样的CORS支持。header("Access-Control-Allow-Origin:*");下面是关于CORS,和 http 302的介绍。CORS是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略。如果您的页面设置了CORS的返回头 Acce
阅读全文
摘要:session 不用多介绍,使一个http可以对应一个终端用户。session的本质使用cookie来实现。原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份。把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了。(在PHP,ASP或者其他服务端语言中都自动帮你实现了)实现cookie 需要为每一个用户设置一个可以标示用户身份的cookie。可以使用如下规则 注册邮箱MD5值+密码MD5值+随机码MD5值。(仅仅举例,这可能并不是一个好的方案)服务端代码片段:res.setHea..
阅读全文
摘要:SVG PATH 的d参数较多,也比较复杂。MovetoLinetoCurvetoArctoClosePath这里只打算记录下 Arcto 参数.(https://developer.mozilla.org/en-US/docs/SVG/Attribute/d)Sometimes it is easier to describe a path as an elliptical curve rather than a Bezier curve. To this end, Arcto commands are supported in paths. The center of the arc is
阅读全文
摘要:众所周知大家对 with 都没什么好感,而且不推荐使用。可以收集到的理由有:下面几条来自 《javascript权威指南》 第 5 版本。 1:使用with的语句很难优化。 2:使用with语句速度要比不使用with语句的等价代码的速度慢得多。 3:在with语句中的函数定义和变量初始化可能产生令人惊讶,和直觉相抵触的行为。 4:90%(或者更高比例)的with应用场景都可以用其他更好的方式代替。如何证明以上观点。 第1点:貌似没有什么好的代码实例。(欢迎大家提供) 第2点:使用with语句速度要比不使用with语句的等价代码的速度慢得多。var a = { ...
阅读全文
摘要:如果你想动态的在页面创建一个iframe,并且取得iframe的document,和 window.并且在iframe中插入一个script标签。//我尝试了各种创建方法,比较难搞定的是 ie8 和 window,IOS 下firefox标签不太一样。//一个兼容的办法大约是这样。var iframe = document.createElement('iframe');var iframedocument;var iframeWindow;document.body.appendChild(iframe);if(iframe.document){ //ie 8 chrome
阅读全文
摘要:| | .P | /| | / | | / | | r/ | y | / | | / | |/ @ | ------------------------------------------> |--x----| x = r * cos@; y = r * sin@; p点旋转 Z 角度以后 得到p1(x1,y1)点 x1 = r * cos(@+Z); y1 = r * sin(@+Z); ...
阅读全文
摘要:功能: 1:可设置只显示某个象限(onlyQuadrant) 2:可设置刻度大小(setCalibration) 3:可设置放大比例(setProportion)可调用的方法(包括上面3个): 向坐标系打印一点 (printPoint) 在坐标画一条直线(printLine) 设置下一画笔的填充色(setFillColor) 设置下一画笔的边框色(setStrokeColor) 获取某个坐标的真实x坐标(getx) 获取某个坐标的真实y坐标(gety)例子:http://jun-lu.github.com/jun/canvas_sin_cos_tan.html源码:https...
阅读全文
摘要:在写完JS版本拼图游戏以后,偶然发现其实打乱顺序的拼图不是都能还原的。在一个3*3的拼图中,会把图片裁切成9块,然后打乱顺序,通过调换空格块与邻块的位置来还原图片。(图1)完全还原的拼图(设 8 号为空格位)0 1 23 4 56 7 8(图2)一个不能还原的顺序(拼到最后你发现6和7的位置倒了,而其他图片的位置正确)0 1 23 4 57 6 8如何判断一个打乱的拼图可还原?一个打乱顺序的拼图,把数字连起来可以组成一个排列(比如图2= 0123456768)。可以通过计算这个排列的逆序数个数加空格位置的坐标,最终得到的数的奇偶性判断。数学原理比较复杂您可以看http://blog.csdn.
阅读全文
摘要:Array.prototype.pushpush向数组尾部添加一项并更新length ,返回数组长度。如果Object使用push会怎样?看下面代码, obj好像数组一样工作了。length会自动更新。var push = Array.prototype.push;var obj = {};push.call(obj, "hello"); // 返回值 1// obj {"0":"hello", length:0}push.call(obj, "world"); // 返回值 2// obj {"0&qu
阅读全文
摘要:问题是怎么个情况? 网页中的ajax请求越来越多,或者应用开始就一直使用ajax与后端进行数据交换。(目前我在公司参与的项目就是如此)N多接口前后端来回调试是个麻烦事。后端不可能短时间把所有的接口都写完,也不会为了前端测试而制造假的数据和接口,不仅耗费时间而且到了开发阶段返回的数据结构、接口名称也可能会有许多改动。那么后端一边写接口一边给前端,这看起来不错。但在具体实施过程中,后端未完成的接口可能有错误,你需要不停的和后端沟通不停的找原因,有可能中途还会停滞等待后端返回数据正 确才能继续。为什么会这样? 1:前端在开发初期就依赖了未成形的接口。 2:后端不完全知道前端需要的数据项及数据格...
阅读全文
摘要:CSScss outline 与border 重要区别,outline不参与到文档流中,即outline是不站位置的。最好为a标签的每一个状态都设置你需要的 text-decoration,不然各种悲催的浏览器表现不一样::selection这应该是一个新的伪类,定义了网页选中的背景颜色,在“又拍”发现的。两个同级的div 都设置了 inline-block,你会发现他们之间有一些间隙(ff,chrome大多A级浏览器都这样),非常莫名其妙。 这是由于代码换行导致的,强制把代码写在一行就行了。 具体为什么还真不知道,太BUG了。文章链接用label 包裹 input 不写for 不能聚焦到in
阅读全文
摘要:近2个月来没有阅读技术书籍,感觉有点盲目。期间看了《明朝那些事儿》(1,2,3)、《FBI教你破解身体语言》 我看书很慢。现在又迷上了手机拼图游戏,写了一个JS版本的,本想可以利用小键盘在3*3的拼图上提高速度,最后发现其实在手机上才能最快。(一个普通的3*3数字拼图15内秒可以完成,30%可以10秒类完成)!JS版本的数字拼图在这里 GIT PUZZLE手机上的拼图游戏名字叫:拼图(数字)游戏(可以在市场中找到,LOGO是一朵花)顺便提供一下RAR 下载JS拼图游戏源码如下----------------------------View Code //一个puzz类 v...
阅读全文
摘要:公司项目上线需要混淆合并压缩javascript代码。原本有一个混淆压缩工具,因为内部服务器挂掉了工具也没有了。使用的压缩算法来自http://dean.edwards.name/packer/ 。 这里只是做了一些简单的合并调用。上面的算法有一些缺点,如果源码缺少必要的分号或者存在多余的逗号压缩以后的文件会出现语法错误。方案:可以先使用google的压缩工具压缩,它可以提示错误,找出一些潜在问题。然后再用混淆压缩!注意:这个压缩工具是运行在服务器环境下的(这里采用了PHP,合并以后要保存文件所以必须是服务器环境)使用的时候需要配置 bulid/config.js 就可以了。var confi
阅读全文
摘要:Stip一个用于页面的提示插件。可以做表单验证,页面提示等。GITHUB:https://github.com/jun-lu/Stip演示地址:http://jun-lu.github.com/Stip/doc/index.html文档下载:下载--------效果----------------------------------感谢
阅读全文
摘要:通过createElement创建的 script 标签其属性async默认为true,直接写在页面上的script标签默认为 false;false能保证多个script的执行顺序,true不能保证。所以在动态插入多个script默认是不能保证执行顺序的!如果在创建的同时指定 async 为 false, 除IE(6789)不能保证顺序,其他A级浏览器都可以!另外:新建的script通过setAttribute设置async为false会失败。使用 script.async = false; 可以达到预期效果!:opera浏览器不鸟 async ,始终能保证执行顺序-------------
阅读全文
摘要:在GITHUB上的文件 https://github.com/jun-lu/jun/blob/master/gitNotes.txt GIT 学习笔记集中化的版本控制系统 CVCS分布式版本控制系统 DVCSGit 基础要点 http://progit.org/book/zh/ch1-3.html 1:直接快照,而非比较差异 2:近乎所有操作都可本地执行 3:时刻保持数据完整性 (Git 使用 SHA-1 算法计算数据的校验 ,40 个十六进制字符(0-9 及 a-f)组成) 4:多数操作仅添加数据 5:三种状态(已提交(committed),已修改(modified)和已暂存(stage..
阅读全文
摘要:动态加载外部JS关于执行顺序,其实还存在问题! //2011-07-28-----------------------------------------------------原文来之:博客园idche前几天公司的项目需要这个功能,本来想找一个别人写的(别人的应该经过了许多测试,没啥问题)。由于对这个功能的要求不高,只需要简单动态加在加载,不重复加载,简单的依赖就可以了。最终还是自己花时间写了。如果你熟悉YUI,那么它跟YUI的工作方式很像添加一个JSWW.add('jQuery', 'http://code.jquery.com/jquery-1.6.1.min.j
阅读全文
摘要:超喜欢这些画,大爱。http://show.baidu.com/给孤独一个爱的抱抱。其实,我们都挺孤单,在陌生的城市,上班、下班、挤公交。下面附上 这个JS效果!(注意:没有测试IE9以下浏览器兼容性)明天就放假了,同学们到哪里去玩?有女朋友陪吗? <! DOCTYPE html><html> <head> <title></title> <mce:style type="text/css"><!-- .box{ text-align:center; margin:20px 0; overflow
阅读全文