webrebuild.org第四届年会——金秋四城联动

JSLint for EditPlus 检验js语法

下载EditPlus.JSLint后解压到任意目录。

在EditPlus中依次点击[工具]->[配置用户工具]->[添加]->[应用程序]

按图中设置:

参数:"$(FilePath)"
命令:WScript.exe "D:\editPlus\app\JSLint\JSLint.wsf"
注意将JSLint.wsf路径替换成你自己的
输出模式中的正则表达式栏:
^.+ >>>in \[(.+)\] \[line\: ([0-9]+)\,character\: ([0-9]+)\]

然后设定一个快捷键~
JSLint检查完后双击错误信息,就会自动将光标定位到出错行。
(查看全文»)

各浏览器中cookie限制

  Firefox(3.6) Opera(10.x) chrome(5.x) IE6 IE7/IE8
最多key个数 50个 30个 53个 20个 50个
key个数超出时 随机删除旧的 先进先出方式删除旧的
单key字节数 4097 4051 4051 4096 5072
单key字节超出时 不进行写入操作
总字节数限制 204850 4997 server端控制(见注2) 4096 10239
总字节超出后 不写入新的 400 Bad Request cookie无法读写
  • 注①:包括key及value,以及分号、等号
  • 注②:总字节数也受HTTP Server的设置影响;
    Apache用这2个参数调整:
    LimitRequestFieldSize 限制客户端发送的请求头的字节数 【默认 8190】
    LimitRequestLine 限制接受客户端发送的HTTP请求行的字节数【默认 8190】
    当cookie超出Server的设置大小后会出现400 Bad Request

结论:我们应该保证cookie key数量<=20,单key字节<=4000b,总字节数<=4000b
但我们应尽量减少cookie的大小,以获得最优页面加载速度。见"When the Cookie Crumbles

jQuery源码查看器

传送门:http://james.padolsey.com/jquery/

jQuery 1.4 更新概述

今天jquery发布了1.4版本,看了下1.4的更新文档,主要是强化了部分原有的方法(批量/支持function参数等),新增了一些实用的方法以及性能优化。
大致如下:

修改内容:

  1. .add() 支持 .add( selector, context ) 方式
  2. 以下增加支持处理function方式:.addClass() .after() .before() .append() .css() .html() .prepend() .removeAttr() .removeClass() .replaceWith() .text() .toggleClass() .val() .wrap() .wrapAll() .wrapInner()
  3. .bind() 支持批量绑定事件
  4. .closest()支持第二个参数(筛选元素的容器),优化效率。用法:.closest( selector, [ context ] )
  5. .data() 支持批量设值 $('body').data({one: 1, two: 2});
  6. .index() 如果无参数,则返回在它兄弟级元素集合中的索引值;并支持使用选择器(selector)过滤
  7. jQuery() 如果无参数,会返回一个空的数组(旧版本返回document)
    jQuery() 创建DOM时,可以使用第二个参数来设置属性值、绑定事件 查看示例
  8. .offset() 新增功能可以直接设置元素相对于document的坐标,并支持function参数
  9. jQuery.param() 第二个参数(布尔值),可以设定是否进行URI编码

新增内容:

  1. .clearQueue() 清除.queue()生成的队列,如无参数将清除fx中的队列;类似于.stop(true)
  2. jQuery.contains() 检测是元素否包含目标
    javascript
    jQuery.contains(document.documentElement, document.body); // true
    jQuery.contains(document.body, document.documentElement); // false
  3. .delay() 延迟执行队列
    html
    <!DOCTYPE html>
    <html>
    <head>
      <style>
    div { width: 60px; height: 60px; float: left; }
    .first { background-color: #3f3; }
    .second { background-color: #33f;}
    </style>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
    </head>
    <body>
     
    <p><button>Run</button></p>
    <div class="first"></div>
    <div class="second"></div>
     
    <script>
        $("button").click(function() {
          $("div.first").slideUp(300).delay(800).fadeIn(400);
          $("div.second").slideUp(300).fadeIn(400);
        });
    </script>
    </body>
    </html>
  4. .detach() 返回从元素数组中移除的匹配元素。
  5. .focusin() 是.bind(‘focusin’, handler)的简写方式。
  6. .focusout() 是.bind(‘focusout’, handler)的简写方式。
  7. .has() 筛选出包含有指定元素的集合
    html
    	<div id="a"><strong>这个会被选中</strong></div>
    	<div id="b">这个选不中</div>
    	<script type="text/javascript">
    	$('div').has('strong').css('color','red');
    	</script>
  8. jQuery.isEmptyObject() 检测对象是否为空值
    javascript
    jQuery.isEmptyObject({}) // true
    jQuery.isEmptyObject({ foo: "bar" }) // false
  9. jQuery.isPlainObject( object ) 检测是否为pain object
    javascript
    	jQuery.isPlainObject({});	//true
    	jQuery.isPlainObject('{}');	//false
  10. .nextUntil([ selector ]) 查找当前元素之后到selector(参数)之间的同辈元素
    javascript
    <div id="a1">3232323</div>
    <div id="a"><strong>这个会被选中</strong></div>
    <div id="b">这个选不中</div>
    <div id="c">ccc</div>
    <div id="d">ccc</div>
    <script type="text/javascript">
    $('#a').nextUntil('#d');	//取得[#b,#c]
    </script>
  11. .prevUntil([ selector ]) 查找当前元素之前到selector(参数)之间的同辈元素
  12. .parentsUntil( [ selector ] ) 取得一个包含着所有匹配元素的祖先元素(直到找到selector截止)的元素集合
  13. jQuery.noop 空函数,当想定义一个空函数时可以用这个。
  14. .toArray() 取得所有匹配的 DOM 元素集合,有点类似于.get()
  15. .unwrap() 移除匹配元素的父级

[译]IE6终极备忘:修复IE6下 25+ Bugs

去年就想将IE的bug系统地整理下,但一直都忙于工作、学习没有完成,看到这篇E文后,我毫不犹豫的放下了手中的工作将之翻译出来。
由于是第一次译文,所以错误在所难免,欢迎大家批评指正。

原文:Ultimate IE6 Cheatsheet: How To Fix 25+ Internet Explorer 6 Bugs

翻译:http://www.vfresh.org/w3c/727(译文对原文进行了补充)

对IE6最好的策略就是不去兼容它。

好吧,我知道你的难处,你不得不去兼容IE6这个狗血的浏览器,因此不得不在兼容IE6上花费很多时间。对此,我颇有同感,来让我来帮助你吧。

我不会象许多文章那样让你去抵制IE6,这并不会帮助到你(迫不得已时)去兼容IE6;因为IE6依旧占有一定的市场份额,你无法放弃IE6。本文将帮助你来解决这个难题。

我查阅过很多资料来摘录这些解决方案(有些是我自己提供的),现在我做成手册提供给大家搞定IE6这个家伙。我尽可能的提供了最优解决方案而不是一些hacks,并且提供了一些相关的资料。如果你发现有更好的方法或者本文有错误,请联系我。

(查看全文»)

JavaScript选项卡

点此查看效果

点此下载

通过取连接的hash值(“#”后面的)来实现tab切换,具有良好的可用性,实现结构行为相分离。

js调用方式:catTab(el,args)

参数说明:

el:目标元素,可以是单个id值/对象也可是多个id值/对象组成的数组
args:参数组{
focusClass:导航连接高亮样式,默认为"lh",
mode:鼠标事件,默认为"mouseover",
ajaxLoad:是否是ajax方式,可用值为“true”、“false”,
ajaxWrap:ajax方式时,主层对象或id,
ajaxLoading:ajax加载进行时执行的函数,第一个参数为目标层,
ajaxLoadsucc:ajax加载完成时执行的函数,第一个参数为获取的数据(responseText),第二个参数为目标层,
ajaxLoadfail:ajax加载失败时执行的函数,第一个参数为目标层
}

普通示例:

javascript
catTab('TabDemo',{
	focusClass:'lh',
	mode:'mouseover'
});

ajax方式示例:

javascript
catTab('TabDemo_3',{
	focusClass:'lh',
	ajaxLoad:true,
	ajaxWrap:'AjaxTab',
	mode:'mouseover'
});

结构层主要在于导航栏的书写:

html
<ul class="tab" id="TabDemo">
	<li><a href="http://www.vfresh.org/#d1" title="">导航1</a></li>
	<li><a href="#d2" title="" class="lh">导航2</a></li>
	<li><a href="http://www.vfresh.org/" title="">导航3</a></li>
</ul>

“导航1”对应显示id值为“d1”的层(href值#后的值)
“导航3”无对应层,无切换效果
导航1和导航3在非click触发导航情况下可打开“http://www.vfresh.org/”

默认显示的tab为设置了高亮className的连接对应的层,如上例默认显示导航2对应的层“d2”
如未设置高亮className,则默认显示第一个导航连接对应的层“d1″

后期将会考虑做以下扩展,记录下:

  1. 鼠标移动触发加上延迟
  2. 可通过window.location.hash的值来显示对应的层
  3. 优化点击显示tab的方法”showTab”
  4. 可移除/添加tab

YUI学习笔记(一)<未完>

迫于压力,提前开始学习js框架

YUI的介绍可见yahoo台湾地方站

Yahoo! 用户界面 (YUI) 函示库是一组使用 JavaScript 所制作出的工具和控件组合,用来建立丰富且具有互动性,并且以 DOM 程序、DHTML 和 Ajax 等技术为基础的网站应用程序。 YUI 函示库还包含了一些核心的 CSS 资源。YUI 函示库中的所有组件都基于BSD 条款以开放原始码的形式公开发布,并且提供给所有网友免费使用。

YUI分成很多个组件,你可以选择你需要的加载,这样就可以大大减少文件大小,优化HTTP request;为了方便,可以使用Configuration and Hosting对js文件加载进行配置。YUI Configuration and Hosting 是雅虎为全球的YUI使用者免费提供了专门的YUI主机。YUI的使用者们可以及时用到最新更新的YUI,同时经过专门优化过的高性能服务器,提供了更快的文件访问速度。

YUI相关资源:

javascript无间断滚动(横向/纵向)

点此查看示例
点此下载(请以此下载版本为准)

参数说明:

javascript
scrollSingle(mode,element,w,h,childTag,num,delay,btn1,btn2)
  • mode:必填项,滚动类型,“x”为横向滚动,“y”为纵向滚动
  • element:目标元素,必填
  • w:宽度,必填
  • h:高度,必填
  • childTag:目标元素的需要进行滚动的子节点tagName,必填
  • num:必要的子元素个数,默认为5(< =该数值时,按钮不显示,不滚动),纯数字
  • delay:延迟时间,单位毫秒,默认为3000
  • leftBtn:左侧按钮,可选;
  • rightBtn:右侧按钮,可选;

(查看全文»)

获取外联样式

IE及OP可使用currentStyle,具体用法可参考《DHTML手册》
Firefox等浏览器可以使用下面的方式来获取

javascript
window.getComputedStyle(element,'').getPropertyValue(stylevalue);

注意这2中方式都是只读的。

于是写了个公用的函数:
(查看全文»)

javascript图片滚动新闻(渐变)

点此查看示例
点此下载

测试通过IE6/7、Firefox、opera、safari

javascript
imgScrollByWrap(imgWrap,time,w,h,btnclass,btnlight);

参数说明:

imgWrap: 装置图片列表的容器,可参考示例
time: 切换时间,单位为毫秒(可选,默认为3500)
w: 图片的宽度,不需要加px,例如125(可选,默认为auto)
h: 图片的高度,不需要加px(可选,默认为auto)
btnclass: 装置按钮的容器的className(可选,默认为scrollNewsBtn)
btnlight: 按钮高亮的className(可选,默认为lh)

(查看全文»)

1/212