• 原帖:http://www.blueidea.com/tech/web/2009/7024.asp

    var iframe = document.createElement("iframe");
    iframe.src = http://www.planabc.net;
    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);
    
  • 原文地址:http://www.planabc.net/2008/10/31/javascript_ready_onload/

    在“按需加载”的需求中,我们经常会判断当脚本加载完成时,返回一个回调函数,那如何去判断脚本的加载完成呢?

    我们可以对加载的 JS 对象使用 onload 来判断(js.onload),此方法 Firefox2、Firefox3、Safari3.1+、Opera9.6+ 浏览器都能很好的支持,但 IE6、IE7 却不支持。曲线救国 —— IE6、IE7 我们可以使用 js.onreadystatechange 来跟踪每个状态变化的情况(一般为 loading 、loaded、interactive、complete),当返回状态为 loaded 或 complete 时,则表示加载完成,返回回调函数。

    对于 readyState 状态需要一个补充说明:

    1. 在 interactive 状态下,用户可以参与互动。
    2. Opera 其实也支持 js.onreadystatechange,但他的状态和 IE 的有很大差别。

    具体实现代码如下:

    function include_js(file) {
        var _doc = document.getElementsByTagName('head')[0];    
        var js = document.createElement('script');    
        js.setAttribute('type', 'text/javascript');    
        js.setAttribute('src', file);    
        _doc.appendChild(js);    
        
        if (!/*@cc_on!@*/0) { //if not IE        
            //Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload
            js.onload = function () {            
                alert('Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload');       
            }    
        } 
        else {        
            //IE6、IE7 support js.onreadystatechange        
            js.onreadystatechange = function () {            
                if (js.readyState == 'loaded' || js.readyState == 'complete') {                
                    alert('IE6、IE7 support js.onreadystatechange'); 
                }        
            }    
        }    
        return false;
    }
            
    //execution function
    include_js('http://www.planabc.net/wp-includes/js/jquery/jquery.js');
    
  • 以前我还真不知道image对象可以这样用的,唉~~out了!

    JS代码如下:

    function getFileSize(filePath){     
        var image=new Image();     
        image.dynsrc=filePath;     
        alert(image.fileSize);     
    }

    调试:

    <input name="file" size="30" type="file" onchange="getFileSize(this.value)" />
  • 原文:http://blog.csdn.net/KimSoft/archive/2009/01/08/3733628.aspx

    Jacob Seidelin 在他的博客中写道:

    “2008年真是太棒了,不仅仅是因为很多厉害的人物在使用JavaScript和新的canvans元素,浏览器厂商也在竞争,试图超越对方在JavaScript方面的表现,这都证明了JavaScript的重要性。以下是我的总结:

    Games

    对于JavaScript游戏来说这一年很伟大。使用DHTML和基于Canvas的游戏似乎有能力来接管Flash的一些领域。许多经典的游戏都被重新的设计:Super Mario , Pac-ManYUI pacman:很酷的YUI JavaScript库游戏), Breakout , Space Invaders , Bomberman T&C Surf Designs

     



    还有很多在经典的旧游戏上加入了他们的新思想:Matt Hackett创作的 Spacius , Mark Wilcox 创作的 Invaders from Mars , VertigoProject创作的 RedLine RacingTetris game

     



    我们甚至还看到了一些角色扮演的游戏:Andrew Wooldridge创造的Tombs of Asciiroth CanvasQuest ,Pierre Chassaing创造的ProtoRPG。 虽然他们大多数都只是试用版或演示,但是我相信有一天他们会变的相当的酷。

     

     

    2008年还出现了一些有趣的JavaScript / DHTML游戏库,最突出的就是GameJs GameJS:超酷的Canvas游戏库)和GameQuery ,后者为jQuery库的扩展。

     


    最后这个很特别, DEFENDER of the favicon,它将旧游戏Defender压缩到了只有16x16的空间。

     




    Demos

    越来越多的浏览器开始支持canvas元素,也就是说,在绘制动态图形方面我们又多了一种选择。有人制作出了一个小型简单的演示 ,用于展示Canavs的能力,但是有些人在这个基础上又向前迈了一步,就像 Matt Westcott制作的Antisocial demo

     



    今年的大忙人Mathieu 'p01' Henri制作了很多小应用,使用一行代码就能做相当酷的事:Rubber effectTunnex Mars ,他们都在256个字节以内!

     



    Mathieu Henri 利用canvas元素,在20 lines 比赛 中创造出了惊人的效果: Dynamic HypnoglowTwinkleHypno Trip Down the Fractal Rug 。这次比赛的优秀作品还有:colliding balls 3D cube effect dynamically generated BMP flames

     



    Asylum inmates在20-line games的比赛中创建了:Lunar Lander a Boulderdash cloneWolfenstein 3D

     




    3D

    canvas元素只支持2D图像,但是这并不代表他不能制作出3D的效果:basic 3D cubes , texturing experimentsJavaScript/Canvas 3D engines很酷的 3D Canvas 演示)。还有许多3D的东西在Nihilogic上。

     




    Emulation

    Matt Westcott创造的JSSpeccy the ZX Spectrum emulator
    James Urquhart 创造的SCUMM interpreter

     



    我个人最喜欢的是JavaScript AGI interpreter

     




    Graphics

    最令人印象深刻的是John Resig将Processing语言加入JavaScript-Processing.js  ,Aza Raskin创建了Algorithm Ink。Eitan Suez将Turtle,字符串图像变成工具转换成JavaScript版,TurtleJS

     




    Audio

    Cameron Adams 创建了一个有趣的JavaScript实例:JS-909JS-909:一个不使用Flash的有趣打鼓机器),这是一个打鼓机器,能够演奏声音而不使用Flash,也不使用任何库,声音由标签引入。
    sk89q 创造的sine waveform generator ,动态生成和播放WAV文件。

     



    其他

    你能使用CSS做些什么了?是不是只是为了您的文字样式?显然不是,Román Cortés证明了这一点,他创造一个 Simpson的形象 ,但这需要你拥有足够的CSS技巧。另外,Ernest Delgado 提供了一个汽车导航的演示 (canvas:驾驶导航)。

     



    最后一个类似于我们小时候玩的积木,Cubescape ,可选择不同的颜色。

     



    我在此许愿,希望2009年的javaScript能更酷!”

     

  • each方法是prototype框架中一个典型的有意思的运用,利用each方法传入自定义迭代函数来厉遍枚举对象,采用该方法后你在你的代码里将看不到for循环的代码了。

    来看prototype官方API定义的each表达式:each(iterator[, context]) -> Enumerable

    新的1.6版给each增加了一个context可选参数,利用它可以指定函数的作用范围,在之前的1.5版中如要这么做,是要给iterator函数bind一个作用范围,这么一个小修改,使得在代码的表达上更加简洁了点,看DEMO:

    var foo=Class.create({
    initialize: function(){
    this.name="Jim";
    },

    myMethod: function(){ //新方法
    $R(1,10).each(function(i){
    document.writeln(i+'. '+this.name+'
    ');
    }, this);
    }

    myMethod2: function(){ //旧方法
    $R(1,10).each(function(i){
    document.writeln(i+'. '+this.name+'
    ');
    }.bind(this));
    }

    });

    另外,each方法还支持一个$break标识,如要跳出迭代函数,则在需要的地方throw $break就成了。