完美判断iframe是否加载完成

posted on

by

IE同样支持iframe的onload,不过得通过 attachEvent 注册


1
2
3
4
5
6
7
8
9
10
11
12
13
14
var iframe = document.createElement("iframe");
iframe.src = "simpleinner.htm";
 
if (iframe.attachEvent){
    iframe.attachEvent("onload", function(){
        alert("Local iframe is now loaded.");
    });
} else {
    iframe.onload = function(){
        alert("Local iframe is now loaded.");
    };
}
 
document.body.appendChild(iframe);

来源:Iframes, onload, and document.domain

空字符串URL引起的多余请求

posted on

by

之前在群里某群友提到过空的src属性(例如img标签),会增加请求。当时以为是.net的机制问题,不过看了这篇文章后Empty-string URLs in HTML,才知道这是浏览器问题。例如下面几种情况,在不同的浏览器,会增加不同的请求数。(PS:如果你不提供src、href这些属性,就不会有这情况,只是W3C验证不通过而已呵呵

1
2
3
<img src="">
<script src="">
<link rel="stylesheet" href="">

测试页面

img-0img-1img-2img-3script标签link标签

下面是通过几个测试页面做的几组测试数据:

chrome 6.0

img    1-2个 增加1个当前页面请求(不包含空的link标签情况下)

    3个以上(含) 增加2个当前页面请求(不包含空的link标签情况下)

link    1个以上(含)增加1个当前页面请求(无视多少空的img,页面只多增加1个请求)

script    有几个就增加几个当前页面请求

firefox 3.6

img    不增加请求

link    1个以上(含) 增加一个当前页面请求

script    有几个就增加几个当前页面请求

IE7

img    1个以上(含)增加一个当前目录根目录请求(也就是不包含页面名称)

link    不增加请求

script    不增加请求

大数组分时处理

posted on

by

最近项目有个功能需要通过JS处理一个比较大的数组,不超过一千(也不是很大-.-),不过用传统的循环处理这已足以让你的浏览器卡上一小会儿了。

刚好从一文章间接找到N久前看过的另一篇关于大数组优化的文章 Timed array processing in JavaScript

当时没这需要所以没去细看,这次记录一下。

下面是文章里总结出来的一段通用的核心函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function timedChunk(items, process, context, callback){
        var todo = items.concat();   //create a clone of the original
        setTimeout(function(){
        var start = +new Date();
 
        do {
             process.call(context, todo.shift());
        } while (todo.length > 0 && (+new Date() - start < 50));
 
        if (todo.length > 0){
            setTimeout(arguments.callee, 25);
        } else {
            callback(items);
        }
    }, 25);
}

完成改版,继续下一项“工作”

posted on

by

终于搞定,半年内第二次改版 ,估计这个版本会用上好长一段时间了,呵呵。

这次尝试用HTML5去写,所以直接屏蔽所有IE,还有FF2.0。

测试的浏览器包括:Chrome 6.0、FF 3.6、FF 4.0b2、Opera 10、Safari  5.0。

好了,继续下一项“工作”的学习与开发。

js循环操作优化

posted on

by

通常我们都习惯使用下面这种写法

1
2
3
for(var i=0;i<arr.length;i++){
  //do something
}

这种是最常见的,由于每次循环都得去计算数组的length属性,所以在IE下效率比较低(非IE浏览器大多都有做优化)。


因此我们第一种优化,就是先将数组length属性存储在变量

1
2
3
for (var i = 0, l = arr.length; i < l; i++) {
  //do something
}

第二种方式:while遍历数组,并使用变量来存储数组每一项

1
2
3
4
var i = -1, c = 0;
while (c = arr[++i]){
  //do something
}

第三种方式:还是用for循环,不过原理与while相似,通过变量存储数组每一项

1
2
3
for (var i = 0, e; e = arr[i++];){
  //do something
}

后面两种性能都差不多,我个人偏向于最后一种,不过最后一种有个问题,就是得确保数组没有null或undefined之类的值,所以第一与第三种看情况使用了,呵呵。

测试页面:loop-test.html

简单的javascript性能计数器

posted on

by

去广州转了一个月,也找到了工作,可惜因为一些事,又回了老家。不过通过最近几次面试,算是更明确了自己将来的方向,就是不再前、后端两面“跑”,往自己更喜欢的“前端路线”发展。

做前端应该说比做后端需要考虑的更多,不仅仅是单纯的coding、程序的性能,还需要做后端与设计人员之间的桥梁,做更多的沟通,同时还得站在用户的角度上去考虑一些问题。

费话不多说了,下面是昨天刚写的一个性能计数器,以后可以作些简单的性能测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
 var arr = [];
 
pzl.Timer.begin("Normal");
for (var i = 0; i < 100000; i++) {
	arr[i] = i;
}
pzl.Timer.end();
 
pzl.Timer.begin("Normal");
for (var i = 0; i < arr.length; i++) {    }
pzl.Timer.end();
 
pzl.Timer.report("container");  //container为容器ID,不填默认为document.body

DEMO演示地址

VS2010 正式版破解方法

posted on

by

Visual Studio 2010正式版在4月12日正式发布,对于各位VS使用者来说,是个大喜的日子。
13日第一时间就下载了,以为还得等好一段时间,才有破解,今天发现居然有破解了,在这里做下记录。

Visual Studio 2010 各版本下载地址:

http://www.microsoft.com/visualstudio/en-us

直接ISO文件下载地址(旗舰版):

http://download.microsoft.com/download/2/4/7/24733615-AA11-42E9-8883-E28CDCA88ED5/X16-42552VS2010UltimTrial1.iso
方法一:
和VS2008一样,安装完VS2010后,在添加/删除程序里点“更新/删除”,输入序列号就可以了
(SN:YCFHQ-9DWCY-DKV88-T2TMH-G7BHP

方法二:
在安装VS2010前,修改Setup文件夹下的setup.sdb文件。
用记事本打开该文件,并找到:

[Product Key]
YR3W8FCM2B7BKF9HMQFTCH7WK

并将key替换成:

YCFHQ9DWCYDKV88T2TMHG7BHP

之后按平时一样安装即可。

以上两个方法我均试过,都可行^_^。(PS:在安装过程中,需要重新启动两次系统,杯具-.-||||)

免责声明:此文仅供技术交流,任何由此产生的法律问题概不负责,谢谢。

原文:http://blog.csdn.net/wjhuangjin/archive/2010/04/13/5482124.aspx

android开发环境搭建

posted on

by

初入门,第一步吗…….当然是开发环境的搭建。

相关软件:
JDK1.6:http://java.sun.com/javase/downloads/index.jsp
Eclips3.5:http://www.eclipse.org/downloads/
Android SDK 2.1:http://developer.android.com/intl/zh-CN/index.html

首先安装JDK1.6,并配置系统环境变量。

  1. “我的电脑”右键 – 属性 – 高级 – 环境变量
  2. 新建JAVA_HOME变量,值为JDK安装目录,默认为C:\Program Files\Java\jdk1.6.0_XX
  3. 新建CLASSPATH变量,值为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar

系统环境变量

  1. 编辑Path变量,添加以下内容。
    JDK  Bin目录,默认为:C:\Program Files\Java\jdk1.6.0_XX\bin
    abdroid的tools 目录如:F:\Soft\Mobile\android-sdk-windows\tools

紧接着是Eclips的设置。
运行Eclips,点击 “help” – “install New Software” (老版本为 “Software Updates” – “Add Site”)


20100313-1-2

在 “word with” 输入 http://dl-ssl.google.com/android/eclipse/site.xml 后点击后面的 “Add”
把可以选的都选上,一直接next

(more…)

Lazyload-图片延迟加载

posted on

by

Lazyload是通过延迟加载来实现按需加载,达到节省资源,加快浏览速度的目的。

基本原理:先把图片地址保存在一个自定义属性,当滚动到图片位置,把图片地址传给src属性,达到延迟加载效果。

–2010.04.11 更新
解决在Chrome下,图片不加载的问题。
原因在于chrome下,document.documentElement.scrollTop获取到的值都是0,解决办法就是改成document.documentElement.scrollTop+document.body.scrollTop

DEMO演示地址

jq插件-提示补全Suggest v1.1

posted on

by

该版本增加了5个方法,具体怎么调用,请直接看DEMO里的代码。

修复了原来的一些BUG,不过还有一个BUG至今未找到原因=.=|||,望哪位朋友知道原因的,告知小弟一下。

 

DEMO演示地址

Page 1 of 3123