我需要判断页面是否已经onload过了,因为如果是在类似$.ready中会出问题
ie和chrome中可以document.readyState=="complete"来判断,ff中不行,要怎么来判断好呢?

解决方案 »

  1.   

    $(function(){
      alert('页面已经加载....');
    })
      

  2.   

    哦,lz没明白我的意思,我有一个方法我就是怕在$中的执行的,所以要判断 是否已经onload了,如果onload了就直接执行,没有则加到onload中执行
      

  3.   

    直接放倒window.onload里面执行不可以?
      

  4.   

    嗯,不行的,因为我在写一个类似插件一样的东西,我无法知道保证别人都是在onload中执行的,而不是在ready中执行的,所以我要判断,有没什么办法 ?
      

  5.   

    http://yiminghe.javaeye.com/blog/353762  look a eye  ~~
      

  6.   

    那个我都知道,没用的
    我的问题是我想在onload 之后 执行我的方法,但是我写的是插件,不知道别人是在onload中执行的了还是在jquery.ready或者Ext.onReady中的执行的,因为这咱ready是在onload之前,所以我可以我想如果是在ready中执行就写个onload来调用 ,如果是onload中就直接执行,所以我需要这个判断,
      

  7.   


          var $ready = function(f){
                // 如果Dom加载完毕 那么就直接执行函数
                if($ready.done) return f();
                // 如果已经绑定了一个函数
                if($ready.timer){
                    // 将下个函数排队
                    $ready.ready.push(f);
                }else{
                    // 由于firefox的缓存优化有可能onload早于dom加载完毕
                    window.onload = $isReady;
                    // 将函数保存起来
                    $ready.ready = [f];
                    // 不断的通过$isReady函数去判断是否加载完毕
                    $ready.timer = setInterval($isReady, 13);
                }
            };        var $isReady = function(){
                // 如果已经完毕 则返回即可
                if($ready.done) return false;
                // 通过几个元素特性 不断判断document等是否完全加载完毕
                if(document && document.getElementsByTagName && document.getElementById 
                    && document.body){
                        // 如果完毕. 停止检测时钟. 清空变量 循环执行函数 将done标志置为完毕
                        clearInterval($ready.timer);
                        $ready.timer = null;
                        for(var i = 0; i < $ready.ready.length; i++){
                            $ready.ready[i]();
                        }
                        $ready.ready = null;
                        $ready.done = true;
                    }
            };
    使用方法:    $ready(function(){
            alert('dom is onload');
                    // DOM已经确保加载完毕,可以进行相关操作
        });
      

  8.   

    to Click_Me:
    我不是要判断dom是否加载完毕,而要判断我的方法是在onload之前还是onload之后.如果在你这种代码里执行就是onload之前,如果在onload里执行就是在onload之后,我就是要帮这个判断
      

  9.   

    是个相当于插件的东西,我怎么能保证别人不用onload?
      

  10.   

    就是在ff中有没有相当于ie document.readyState=="complete"的东西或者事件
      

  11.   

    这个规矩是你定的,你完全可以写个文档,告诉别人你的方法在什么时候用,就像我们写js不能在dom加载之前访问dom一样。
      

  12.   

    大家把问题想复杂了吧,我感觉用同typeof就可以判断onload上是否被绑定函数了!这个函数的作用和window.onload类似,不过它更有效,因为它可以检查window.onload上是否被绑定上函数:
    function addLoadEvent(){
    //将已经绑定到Window.onload的函数赋给oldonload;
    var oldonload=window.onload;
    //如果window.onload上未绑定函数,则将需要绑定的函数直接绑定到window.onload上;
    if(typeof window.onload!="function"){
    window.onload=func;}
    //若已经绑定,则将已经绑定的函数和未绑定的函数一起加载;
    else{
    window.onload=function(){
    oldonload();
    func();
    }
    }
    }楼主仔细分析一下!
      

  13.   

    将你的代码放到try-catch中,然后通过定时器来判断你要的对象是否存在,直到得到对象为止