Posts Tagged ‘JS’

最近几个关于js的笔记

第一,重温一下数据的json传输手法,最简单的php json转js对象方法:

//php的array('a'=>1,b=>'2')转换输出"{a:1,b:2}"的json字符,以下方法转为js对象 eval('var result = '+returnData+';');//等同于:var result={a:1,b:2} //然后可以通过以下方法遍历js对象 for(var v in result){ /*这是递归alert出属性值*/ alert(result[v]); }

第二,研究了一下swfupload(官方下载)这个swf+js的上传组件:

先明确一下原理:

实际上整个原理很简单,单一过程:选择一个文件,然后上传,然后通过响应handle.js里面定义的事件来后续操作。对于多个文件的上传实际上就是重复这个单一过程,handle.js里面定义的每个响应事件都是针对一个文件的上传过程。

再说一下跟php的交互:...

......[ More Detail ]

多层div相互层叠激活方法(提升z-index)

最近有一个作业中的一个小功能要求以下:多层div相互层叠,要求激活其中一个。 先看我做的DEMO:http://xiebiji.com/works/activeDiv/ 来看一下关键的js代码(基于mootools):

//层叠激活 /*获取当前所有层区域*/ //定义一个存放多个区域数据的集合 var allArea=new Array(); //遍历所有存在的div $$('#comm_area .comm_div').each(function(e){ pushOneArea(e);//依次存数据 }); //往allArea集合中存入一个区域数据,e为$()方法得来的元素 function pushOneArea(e){ var oneArea=new Object();//定义1个对象 //赋予对象一些必要的数据 oneArea.sx=e.getStyle('left').toInt(); oneArea.ex=e.getStyle('left').toInt()+e.getStyle('width').toInt(); oneArea.sy=e.getStyle('top').toInt&#...
......[ More Detail ]

js中自定义mouseenter、mouseleave的写法

首先说一下什么是mouseenter事件:

实际上就是鼠标从外面移到某个元素里面(触发了目标方法)后,鼠标再在里面移动不会重新触发目标方法。moueseleave同理。

本身ie系列浏览器是有onmouseenter这个事件定义的,但是firefox之类的浏览器没有这个,所以只能模拟。

以下提供完美模拟的方法:

//ele为目标元素,type为事件类型不用'on',func为事件响应函数 var addEvent=function(ele,type,func){ if(window.document.all) ele.attachEvent('on'+type,func);//ie系列直接添加执行 else{//ff if(type==='mouseenter') ele.addEventListener('mouseover',this.withoutChildFunction(func),false); else if(type==='mouseleave') ele.addEventListener('mouseout',this.withoutChildFunction(func),false); el...
......[ More Detail ]

实际上js文件放最后是个好方案,但有更好的方案

问:javascript文件在页面加载的时候放哪里最好?

之前被这样问到,我马上就答:放最后。现在反省!实际上这个答案太肤浅了。

运行 Internet Explorer 7 或更早版本的浏览器在遇到 JavaScript 文件时会产生阻碍。通常,它们在以所谓的推测模式下载时速度足够快。但如果遇到 JavaScript,浏览器会跳出此模式,专门下载 JavaScript。而且多个Javascript是按串行形式下载,您将发现 JavaScript files 文件之间不会出现并行,也绝少会同时加载其他类型的文件。

所以我们会把所有其他东西都下载才开始下载js文件,所以我以前的答案是:把js放最后面。

而实际上在这个基础上还有技巧,就是把原来串行加载js的方式转为并行。具体做法:

function AsyncLoad(){ var l = ar...
......[ More Detail ]