IE中Image.onload失效的问题

最近在做wBox开发中,需要做一个图片的幻灯片效果,为了方便加载速度,我使用了new Iamge的对象方法来预加载图片,当图片onLoad就运行一个函数来计算图片的大小尺寸,进行jQuery动画,以及切换图片src,在firefox下开发完成后,可是到了IE下进行调试总是不会触发onload事件,不管是IE8、IE7还是万恶的IE6,都不会触发onload事件,我很迷惑,后来在google上找到了解决的方法:一下为引用部分

最初的代码如下:

var img = new Image;
img.src = "test.gif";
img.onload = function(){
    alert ( img.width );
};

这段代码看着没什么问题,但是为什么onload没有被IE调用呢?因为IE会缓存图片,第2次加载的图片,不是从服务器上传过来的,而是从缓冲区里加载的。是不是从缓冲区里加载的图片就不触发onload事件呢?我于是我测试了以下代码,成功了~

var img = new Image;
img.onload = function(){
    alert ( img.width );
};
img.src = "test.gif";

我把onload写到前面去,先告诉浏览器如何处理这张图片,再指定这张图片的源,这样就正常了。所以,不是IE没有触发onload事件,而是因为加载缓冲区的速度太快,以至于没有运行到img.onload的时候,onload事件已经触发了。这让我想到了Ajax,我们在写xmlhttp的时候,都是先指定onstatechange的回调函数,然后再send数据的,道理是一样的。

jQuery实现拖拽功能

在360开发中,使用了我写的一个jQuery wBox插件,可是这个wBox只是根据项目需要进行的修改,没有加上拖拽功能,而我正在写新的wBox插件加上了简单的拖拽功能,wBox已经进行到最后样式修改、程序调试阶段,基本功能已经实现。言归正传,结合wBox部分源代码说说jQuery的拖拽功能实现。
jQuery wBox插件预览

要写一个拖拽效果,必须区分开mousedown,mouseup,mousemove 三个鼠标的不同状态,当mousedown的时候激发拖拽,表示拖拽开始,当mouseup的时候自然拖拽就结束,而mousemove的时候是拖拽的过程,这个过程就要不停的获取鼠标的位置,根据鼠标运动到得位置设置要拖拽的目标div的位置,具体就不解释啦,很简单的原理,很简单的代码,放出wBox drag部分的代码,希望对大家有用,C为拖拽的目标对象:

使用CSS设置文字反选的背景颜色

在计算机操作中经常会有反选出现,系统一般会根据选择区域的颜色,显示出补色。但windows默认的文字选择时,背景为蓝色,前景色为白色,如果背景是深色,则文字为蓝色,背景变成白色。如下图所示:

反选默认样式

能不能改变选择的默认颜色呢,也许很多人对这个问题不是很在意,也可能你早就见到过这个效果了,但是却忽略了。查看示例(请在非IE浏览器下查看)

从博客里可以看到PPK给出了如下的CSS代码:

::-moz-selection{    /*针对Firefox*/
    background:#cc0000;
    color:#fff;
}

::selection {
    background:#cc0000;
    color:#fff;
}

code::-moz-selection {  /*code是标签选择器,可以换成p或span等*/
    background: #333333;
}

code::selection {
    background: #333333;
}

通过以上代码可以看出,你完全可以给不同的容器定义不同的反选背景颜色,

CSS+jQuery实现滑动幻灯片实例详解

今天我看见一个比较不错的jQuery幻灯片教程,比我之前的文章《两个简单的jQuery幻灯片实例》写的更为详细,并且有框架布局的演示图片,特地转载来,部分英文不翻译了,很简单的~

HTML部分代码

Start with having a wrapping container div called _main_view_, and two sections nested inside called _image_reel_ and paging. The _image_reel _will contain the sliding images, and paging contains the paging controls. Take a look at the image below for a visual.

`html”><div class=”main_view

<div class="window">
    <div class="image_reel">
        [![](reel_1.jpg)](#)
        [![](reel_2.jpg)](#)
        [![](reel_3.jpg)](#)
        [![](reel_4.jpg)](#)
    </div>
</div>
<div class="paging">
    [1](#)
    [2](#)
    [3](#)
    [4](#)
</div>

`
css+jQuery实现滑动幻灯片实例教程

Less—让CSS如此简单

less

CSS 最痛苦的是要搞定一堆浏览器兼容bug ,其次就是要面对CSS 不是programming language 这现实,不存在其他程式语言常见的变数、运算、继承等概念,使原本简单的工作变得冗长,并且使维护工作变得麻烦。
less 的出现便是为了解决这个问题:在现有CSS syntax 的基础上,为CSS 加入程式语言的特性,包括变数、scope、nested rules、运算、继承。
看例子你便会明白:

@brand_color: #F0F;

#container {
div {
color: @brand_color;
border: none; }
p {
color: @brand_color;
}
}

PHP二维数组去重复项函数

PHP数组去除重复项有个内置函数array_unique(),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数

//二维数组去掉重复值
> function array_unique_fb($array2D){
>      foreach ($array2D as $v){
>          $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
>          $temp[] = $v;
>      }
>      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
>     foreach ($temp as $k =&gt; $v){
>         $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
>     }
>     return $temp;
> }

Javascript正则表达式详解

js正则表达式是很多js开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把javascript正则表达式的用法进行了列表,希望对于大家学习javascript正则表达式有一定的帮助。

建立正则表达式对象语法 re = new RegExp(/pattern/[flags])

flags 参数说明: g (全文查找出现的所有 pattern
i (忽略大小写)
m (多行查找)

简单修改.htaccess来提高Yslow等级

最近一直在修改我的爱墙程序,其中对于Yslow的等级纳入了考虑,之前的空间不支持自定义htaccess文件,现在的空间支持自定义htaccess,在以前的文章中我写过一篇关于htaccess的文章,今天我在结合爱墙许愿送祝福http://love.js8.in)的网站,来说说通过修改htaccess达到Yslow优化,等级提高的方法,大家可以看看[http://love.js8.in](http://love.js8.in)的Yslow等级已经到了**B**,分数是85~87之间,由于网站使用了jQuery的FaceBox插件以及量子统计,所以等级有点降低,可是总体等级是不大会变的,其实我就是通过修改htaccess达到Yslow优化的,这是最直接的方法,不需要修改程序代码既可以提高Yslow等级~废话不说啦,进入正题吧。

简单修改htaccess文件提高Yslow等级优化

Javascript设置光标位置到结尾并显示出来

今天同事问一个关于光标移动到输入框最后的问题,问题得到了解决(详情请见《Javascript获取光标位置以及设置光标位置》),并且兼容IE、Firefox、Opera,可是又有了新问题:假如输入的内容过多,而Input已经不能显示最后部分的内容,光标即使移动到了最后,也是不能显示出来的。他要的效果是,类似于输入那种效果,当输入文字之后,内容往左走,这样光标就一直在最后显示,而不会出现光标虽然出现在输入框最后可是不能显示出来的现象。

原理

在Firefox我想的方法是模拟一次键盘事件
如先建立document.createEvent(“KeyboardEvent”),然后光标移动到输入框最后,然后输入一个空格,在删除空格,这样子光标就会有在输入框最后不出现变为出现了~详细方法请见:Mozilla Developer Center

JS代码

函数setCaretPosition代码如下: