6月 292016
 

50款JavaScript图表库分享:

http://my.oschina.net/u/935975/blog/220987

纯文本流程图: http://my.oschina.net/iamancoder/blog/652233

13个JavaScript图表(JS图表)图形绘制插件:

13个JavaScript图表(JS图表)图形绘制插件

js版的visio: http://demo.qunee.com

js通过数据生成流程图: http://my.oschina.net/blogshi/blog/221749

d3: https://github.com/cpettitt/dagre-d3  功能上来看,基本是dotgraph的js实现

js写的国际象棋: http://www.jointjs.com/demos/chess

 

 

 Posted by at 上午 1:41
6月 062016
 

一般来讲,浏览器中下载文件都是一个链接给浏览器,下载进度有浏览器来显示;比较先进一些的实现就是通过js不断地循环请求服务器端,来获取下载的百分比。

最近发现一个网站(https://mega.nz/#F!nJR3BTjJ!N5wZsncqDkdKyFQLELU1wQ )在下载文件时,并没有立即调出文件保存对话框,而是直接在网页中显示下载进度,直到下载完毕才弹出文件保存对话框,点击保存就完成了。觉得很新鲜,研究了一下,是通过blob实现的; 关于blob的学习:百度: js blob

文亮同学提到了: URL.createObjectURL  ,稍后再研究这个东西

 Posted by at 下午 3:18
8月 152014
 

问题

为什么jQuery.ajax() 没有默认支持302重定向?

解答

jQuery.ajax 是通过xmlHttpRequest来实现的,而这个东西存在跨域问题,如果302跳转到的地址还是当前域,则服务器端几乎没有302重定向的必要;如果302跳转到的地址不是当前所在的域,则必然存在跨域问题。可能就是这个原因吧。

但是:

出于跨域资源共享的需要,很多浏览器开始支持cors,如果浏览器支持了cors(假设server端也做了相应的配置),则,jQuery.ajax似乎应该支持302才是,如果自己实现,请注意,如果需要上行cookie(一般是需要的),需要设置  xhr.withCredentials=true

 

如何实现302

对于jQuery.ajax来讲,302是一个错误,可以通过实现 ajaxComplete 事件来完成,具体参考: http://api.jquery.com

参考文章:

http://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call

http://stackoverflow.com/questions/6955308/in-an-ajax-call-302-is-not-followed

http://www.cnblogs.com/Darren_code/p/cors.html

http://blog.csdn.net/hfahe/article/details/7730944

 

 Posted by at 下午 2:23
7月 312014
 

转自: http://www.csser.com/board/4f3f516e38a5ebc9780004f8

avascript中的for-in循环和hasOwnProperty

与in操作符相比,for in 在循环对象的属性时也会遍历原型链,for in 不会读取不可枚举属性,如数组的length属性。 小结 当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in 循环时,建议增加 hasOwnProperty 进行判断,可以有效避免扩展本地原型而引起的错误。

 使用hasOwnProperty进行过滤

与in操作符相比,for in 在循环对象的属性时也会遍历原型链,for in 不会读取不可枚举属性,如数组的length属性。

我们不可能改变 for in 循环的行为,当需要对循环体内某些属性进行过滤时,可以利用Object.prototype的hasOwnProperty方法来完成。

提示:因为 for in 循环总是遍历整个原型链,所以当遍历多继承的对象时效率较低。

使用 hasOwnProperty 进行过滤

例子中因为使用了hasOwnProperty,最终输出moo;如果忽略 hasOwnProperty ,代码将会输出非预期结果,因为本地原型(如Object.prototype)已经被扩展了。

Prototype框架就是扩展Javascript原始对象的一个类库,并被广泛使用,其缺点也很明显,当框架引入后,如果不使用 hasOwnProperty 进行过滤判断,输出结果保证不是你想要的。

最佳实践

推荐在 for in 时,总是使用 hasOwnProperty 进行判断,没人可以保证运行的代码环境是否被污染过。

hasOwnProperty

为了检查某个对象是否拥有不在原型链上的自定义属性,就有必要用到 hasOwnProperty 方法,任何一个对象都具有该方法,它继承自 Object.prototype。

提示:我们无法完全检测某个属性是否是undefined,因为属性有可能存在,但其值为undefined。hasOwnProperty 是Javascript中唯一一个可以处理对象属性而不遍历原型链的方法。

只有 hasOwnProperty 给出了正确的预期结果,当遍历对象的属性时这是很有必要的,没有其它办法来排除定义在对象原型链上的属性。

hasOwnProperty 作为属性

Javascript 并没有保护 hasOwnProperty 为关键字或保留字,因此,如果某个对象拥有同名的属性,就有必要利用扩展的 hasOwnProperty 来获取正确结果。

小结

当检测某个对象是否拥有某个属性时,hasOwnProperty 是唯一可以完成这一任务的方法,在 for in 循环时,建议增加 hasOwnProperty 进行判断,可以有效避免扩展本地原型而引起的错误。

 Posted by at 下午 3:12
5月 112014
 

经常看看:

以下示例演示如何使用 Int8Array 对象处理从 XmlHttpRequest 获取的二进制数据:

http://msdn.microsoft.com/zh-cn/library/br212462(v=vs.94).aspx

当然,这些非常用的内置对象多半存在兼容性问题,不过,什么样的东西有什么样的用法。

还有:

Int16Array / Int32Array

Uint8Array / Uint16Array /Uint32Array

 Posted by at 下午 1:42
12月 032013
 

【转载】http://hj149.javaeye.com/blog/505237

hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。格式如下:

Js代码

1. object.hasOwnProperty(proName);

判断proName的名称是不是object对象的一个属性或对象。

 

   1. 示例一:

var bStr = “Test String”.hasOwnProperty(“split”);    // 得到false, 因为不能检测原型链中的属性

但是:

“Test String”.split(” “);是能成功调用的
   2.示例二:

var bStr1 = String.prototype.hasOwnProperty(“split”); //String对象的原型上本来就有这个属性,自然返回true
   3. 示例三

var bObj = ({fnTest:function(){}}).hasOwnProperty(“fnTest”); // 返回true,因为对象中属性 存在

 
    Object 对象

Object 对象自身用处不大,不过在了解其他类之前,还是应该了解它。因为 ECMAScript 中的 Object 对象与 Java 中的 java.lang.object 相似,ECMAScript 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中,所以理解了 Object 对象,就可以更好地理解其他对象。

     Object 对象具有下列属性:

constructor
对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
Prototype
对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。

Object 对象还具有几个方法:

hasOwnProperty(property)
判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty(“name”))
    IsPrototypeOf(object)
判断该对象是否为另一个对象的原型。
    PropertyIsEnumerable
判断给定的属性是否可以用 for…in 语句进行枚举。
ToString()
返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
ValueOf()
返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同

 

 

更多参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

 Posted by at 下午 12:18
6月 072013
 

1. IE8下(可能还有别的浏览器)的数组对象不支持indexOf(..)方法

2. IE8下(可能还有别的浏览器)的字符串的substr(..)方法不支持从结尾计算,如: “abcd”.substr(-2) ; 在IE8下是 abcd, 在其它浏览器下为: cd

 

在给几个面试题:

1.

或者

 

2.

结果: i没有被定义

梁栋说,http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf  里面有介绍

 Posted by at 下午 7:22
6月 022013
 

参考资料:

http://www.jb51.net/article/22880.htm

例如:

 

 Posted by at 下午 6:05