javascript 数组方法

认用逗号为分隔符+展开-JavaScriptvara=[1,2,3,4,5];varb=a.join("|");//a:[1,2,3,4,5]b:"1|2|3|4|5"  数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push)、删除(shift)里面元素,我们还可以通过for循环遍历里面的元素,那么除了数组我们在JavaScript里还可以有别的集合吗?  由于JavaScript的语言特性,我们可以向通用对象动态添加和删除属性。所以Object也可以看成是JS的一种特殊的集合。下面比较一下Array和Object的特性:  Array:新建:var ar
http://www.w3dev.cn/article/20110901/javascript-array-method.aspx

JavaScript解析机制

1.5 JavaScript解析机制JavaScript解 析过程可以分为编译和执行两个阶段。编译也就是我们常说的JavaScript预处理(即预编译)。在预编译期,JavaScript解释器将完成对 JavaScript代码的预处理,也就是说把JavaScript脚本代码转换成字节码。在执行期,JavaScript解释器借助执行期环境把字节码 生成机械码,并按顺序执行,完成程序设计的任务。1.5.1 预编译JavaScript是一种解释型语言,而不是编译型语言。所谓解释型语言,就是代码在执行时才被解释器一行行动态编译和执行,而不是在执行之前就完成编译。简单说,解释型语言就是边编译边执行,而编
http://www.w3dev.cn/article/20110813/JavaScript-Resolution-mechanisms.aspx

javascript设计模式1

有变量name。该模式的应用场景还是很多的,是不是遇 Javascript设计模式之工厂模式Factory  工厂模式Factory:先创建一个抽象类,然后基于这个抽象类派生出子类,并在子类中创建工厂方法,从而把实例化推迟到对应的子类中进行,说实话,工厂模式在javascript中的应用有些牵强,毕竟javascript不像java存在硬编码带来的困搅,要学习的只是模式的思想,切忌因为模式而模式。  不妨举个偏激点的例子,为tab切换、下拉列表等组件添加定位,渐隐,延迟等效果,我们可以先为这些组件定义一个接口:+展开-JavaScript  varIwidget=newInterface("
http://www.w3dev.cn/article/20110807/javascript-design-mode.aspx

javascript设计模式2

JavaScript$=prototypeToYuiAdapter;  这样的话,在prototype中就可以使用YUI中的get方法了。本人并不是很推崇这种模式,所以不多做阐述,事实上我觉得不到万不得以,我们根本不需要使用这种模式,作为一名负责任的设计者,我宁可做代码重构也不希望使用该模式,只能作为无奈之下的过渡型方案使用。Javascript设计模式之门面模式,观察者模式  门面模式:这应该是所有脚本框架中都用到的,最基础的设计模式,随便找个框架中定义好的方法看看就行了,比如说YUI中的setStyle方法等等等等。在这里就不多阐述了。  观察者模式:该设计模式应用在javascript
http://www.w3dev.cn/article/20110807/javascript-design-mode-2.aspx

JavaScript本地存储(DOM Storage,Local Storage)

左右,实用性大大提高。2. 能够真正的持久化到本地。cookies并没有提供永久持久化到本地的方法,它总是会过期,而DOM Storage则没有这个问题。3. 效率更高。cookies是需要发回服务器端的,而DOM Storage则不会。4. 接口更加标准,使用更加简单。相信cookie在javascript中的操作有多麻烦大家都是非常清楚的,而DOM Storage则需跟json一样操作即可。  当然它同样也有一些缺点,比如安全和隐私方面可能控制的不是那么好,它的存储是明文的并未经过加密,可以比较容易的获取存储的信息。  无论如何,DOM Storage所具有的特性都是让人十分振奋的。但是(
http://www.w3dev.cn/article/20110807/javascript-DOM-Storage-Local-Storage.aspx

JavaScript类和继承:constructor属性

  constructor属性始终指向创建当前对象的构造函数。比如下面例子: +展开-JavaScript//等价于varfoo=newArray(1,56,34,12);vararr=[1,56,34,12];console.log(arr.constructor===Array);//true//等价于varfoo=newFunction();varFoo=function(){};console.log(Foo.constructor===Function);//true//由构造函数实例化一个obj对象varobj=newFoo();console.log(obj.constru
http://www.w3dev.cn/article/20110807/javascript-class-inherit-constructor.aspx

浏览器内核js阻塞页面加载

学朋友搞不清楚,既然说JavaScript是单线程运行的,那么XMLHttpRequest在连接后是否真的异步?其实请求确实是异步的,不过这请求是由浏览器新开一个线程请求(参见上图),当请求的状态变更时,如果先前已设置回调,这异步线程就产生状态变更事件放到 JavaScript引擎的处理队列中等待处理,当任务被处理时,JavaScript引擎始终是单线程运行回调函数,具体点即还是单线程运行 onreadystatechange所设置的函数.参考资料:http://fed.renren.com/2010/01/247http://www.phpv.net/html/1700.html来源:ht
http://www.w3dev.cn/article/20110806/brower-Kernel.aspx

JavaScript代码,变量,函数执行顺序问题

用  看上去,fn2()和延时程序是分两个过程再走,但其实,这是JavaScript中的回调机制在起作用,类似于操作系统中的中断和响应 延时程序设置一个中断,然后执行fn2(),待1000毫秒时间到后,再回调执行fn1()。  同样,5中body的onload事件调用的函数,也是利用了回调机制body加载完成之后,回调执行fnOnLoad()函数。  Ajax请求中的数据处理函数也是一样的道理。  关于JavaScript线程问题的更深入讨论,看这篇 javascript中的线程之我见,以及infoQ上的 JavaScript多线程编程简介。困了,再说一下回调函数吧。7. 回调函数  回调
http://www.w3dev.cn/article/20110805/javascript-execution-sequence.aspx

javascript执行顺序与作用域

自己试试看吧。 总之,再重复一遍之前的结论:不要在变量未定义之前使用它。 最后介绍一个我也搞不明白的问题: 在HTML文档里写上这段代码: +展开-HTMLscripttype="text/javascript"window['a']='Hi';/scriptscripttype="text/javascript"src="out.js"/scriptscripttype="text/javascript"alert(a);/script 然后在out.js里写上这句: +展开-JavaScriptif(false){vara='Hello';} 然后用FF和IE6分别运行,看看你得到什么。
http://www.w3dev.cn/article/20110805/javascript-var-execute-order-scope.aspx

JavaScript变量函数预编译与执行顺序的关系

来说明JavaScript代码在页面中的执行顺序。如果说,JavaScript引擎的工作机制比较深奥是因为它属于底层行为,那么JavaScript代码执行顺序就比较形象了,因为我们可以直观感觉到这种执行顺序,当然JavaScript代码的执行顺序是比较复杂的,所以在深入JavaScript语言之前也有必要对其进行剖析。1.6.1 按HTML文档流顺序执行JavaScript代码  首先,读者应该清楚,HTML文档在浏览器中的解析过程是这样的:浏览器是按着文档流从上到下逐步解析页面结构和信息的。JavaScript代码作为嵌入的脚本应该也算做HTML文档的组成部分,所以JavaScript代码在
http://www.w3dev.cn/article/20110805/JavaScript-function-Variable-Precompiled-order.aspx

JavaScript zXml Library

兼容浏览器的解析XML文件,XML字符串的通用类库/*------------------------------------------------------------------------------ * JavaScript zXml Library * Version 1.0.2 * by Nicholas C. Zakas, http://www.nczonline.net/ * Copyright (c) 2004-2006 Nicholas C. Zakas. All Rights Reserved. * * This program is free software; y
http://www.w3dev.cn/download/20110712/JavaScript-zXml-Library.aspx

客户端VBScript和JavaScript相互调用的问题

法,对这种需求真的很无语。。。。  由于ajaxpro在客户端注册的脚本是JavaScript的,但是JavaScript无法调用VBScript注册的函数或者过程,只能访问VBScript注册的变量,VBScript可以调用JavaScript注册的变量或者方法,所以VBScript使用ajaxpro的异步功能时,需要传递回调函数,如果传递的是VBScript的function函数,会出错“由于出现错误 80020102 而导致此项操作无法完成”的错误。  要解决这个问题,可以在VBScript传递JavaScript的回调函数,而不是VBScript的回调函数。反正变量是可以相互访问的,这
http://www.w3dev.cn/article/20110630/VBScript-JavaScript-function-call.aspx

javascript获取file控件全路径

过obj.value是可以获取客户端选择文件的全路径的,但是到ie7就只能获取文件名,这对于onchange事件立即显示图片会有问题,可以用js方法解决具体代码如下:+展开-HTMLhtmlheadtitlegetfileinputfullpathtitlescriptlanguage='javascript'functiongetFullPath(obj){if(obj){//ieif(window.navigator.userAgent.indexOf("MSIE")=1){obj.select();returndocument.selection.createRange().text;}
http://www.w3dev.cn/article/20110620/javascript-file-full-path.aspx

JS/Exploit-DialogArg.gen特洛伊木马程序

  搞幽啊,showModalDialog {url:} 放在script标签之间竟然变成了JS/Exploit-DialogArg.gen特洛伊木马程序,被麦咖啡给杀掉了,O(∩_∩)O哈哈~  如果你的电脑安装有麦咖啡,只要将下面的内容保存在文本类型的文件里面,如.txt,.aspx..jsp等等里面,就会被识别为JS/Exploit-DialogArg.gen特洛伊木马程序,然后杀掉,script标签之间的js代码全部被删除。script type="text/javascript" showModalDialog {url:}/script
http://www.w3dev.cn/article/20110526/JS-Exploit-DialogArg-gen-mcafee.aspx

最新Json.js文件下载

js将JavaScript对象转换成字符串或者将json格式的字符创转换为json对象。使用说明json.js 2007-08-05Public DomainThis file adds these methods to JavaScript:array.toJSONString()boolean.toJSONString()date.toJSONString()number.toJSONString()object.toJSONString()string.toJSONString()These methods produce a JSON text from a JavaScript va
http://www.w3dev.cn/download/20110420/json-js-file-download.aspx

javascript图片卷帘/淡入淡出效果

更新:2011-03-29增加淡入淡出效果,效果如下javascript实现的图片卷帘切换效果,上下左右都可以切换,兼容IE,ff,chrome,和javascript图片翻页切换效果很接近,稍微修改了一些样式和一些脚本代码。cfg配置说明w: 容器宽,不设置默认500pxh: 容器高,不设置默认为500pxdelay: 触发器间隔,默认10msstep: 切换时每次的移动的距离,默认20pxchrDelay:自动播放间隔时间,如果不传递这个值,将不会自动播放topLeft: 被移动的层距离要显示的层的距离,默认10pxzIndex: 层垂直显示循序,默认100data: 数组,对应容器的内容
http://www.w3dev.cn/download/20110328/javascript-photo-roll-up-effect.aspx

javascript图片翻页切换效果

javascript实现的图片翻页切换效果,上下左右都可以切换,兼容IE,ff,chrome,效果如下cfg配置说明w: 容器宽,不设置默认500pxh: 容器高,不设置默认为500pxdelay: 触发器间隔,默认10msstep: 切换时每次的移动的距离,默认20pxchrDelay:自动播放间隔时间,如果不传递这个值,将不会自动播放topLeft: 被移动的层距离要显示的层的距离,默认10pxzIndex: 层垂直显示循序,默认100dir: 切换方向,从左边切换还是右边,从上还是下,默认左边到右边1,右边到左边为2,上到下3,下到上4,注意右边的时候水平导航条可能会出现data: 数组
http://www.w3dev.cn/download/20110322/photo-turn-page.aspx

直接修改fckeditorcode_gecko.js,fckeditorcode_ie.js文件扩展fckeditor自定义工具栏按钮

  由于要插入客户广告,所以需要扩展fckeditor的自定义功能,具体原理可以参考这篇文章。扩展Fckeditor工具条--添加自定义功能按钮。不过修改的是源代码,然后再重新打包压缩。我是懒得再打了,而且文章里面也没打包成功。  所以干脆直接修改打包压缩过的js文件fckeditorcode_gecko.js【非IE浏览器,如果不需要兼容非IE浏览器就不需要修改这个文件了】,fckeditorcode_ie.js【For IE】算了,原理也是差不多的,只是fckeditorcode_gecko.js,fckeditorcode_ie.js代码压缩过,看起来比较吃力,不过知道原理以后,添加
http://www.w3dev.cn/article/20110128/update-fckeditor-fckeditorcode-gecko-file-add-selfdefine-toolbutton.aspx

Javascript获取生肖属相和星座

Javascript获取生肖属相和星座源代码如下+展开-HTMLhtmlheadscriptlanguage="javaScript"functionf_GetAnimal(ld_year){varla_Animals=newArray("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");returnla_Animals[(ld_year-4)%12];}functionf_GetAstro(ld_month,ld_day){vars="魔羯水瓶双鱼牧羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯",arr=[20,19,21,21,21,22,23,23
http://www.w3dev.cn/article/20110107/javascript-shengxiaoshuxiang-xingzuo.aspx

JavaScript实现的标签云效果

JavaScript实现的3D球面标签云效果使用说明:一般需要修改的,应该是3D球面的大小,也就是半径,修改了大小,就可以随意放进自己页面的任何地方。半径大小修改:下载后,打开 miaov.js 文件,第一行:var radius = 120; 这就是半径大小值了。文字的修改在 miaov_demo.html 文件中,可以任意添加关键词的个数;如果希望修改文字颜色、鼠标经过的样式,可以打开 miaov_style.css 文件,修改相关的样式即可。效果原理:制作这个效果需要重新回顾一下高中的数学知识:球坐标系例如:r∈[0,+∞),φ∈[0, 2π],θ∈[0, π] .r = 常数,即以原点
http://www.w3dev.cn/download/20101023/javascript-3d-cloud-tag.aspx

javascript中instanceof和类

  在javascript里,每个function都有一个prototype属性,这个属性的用途是实现继承机制。必如下面定义的+展开-JavaScriptfunction class1:function class1(){} class1.prototype={a:10,b:100};则class1的每个实例都会从prototype继承a和b这两个属性。  同时,每个对象都会有一个内部的属性_proto_(不同的javascript虚拟机实现用的名字可能不同),这个属性对js开发人员不可见,只在虚拟机内部使用。每当创建一个对象的时候,这个对象的_proto_就会被赋值为这个对象的构造函数的p
http://www.w3dev.cn/article/20101013/2900.aspx