window.load和document.ready的Javascript代码可用性

时间:2014-05-28 18:21:43

标签: javascript jquery

我需要一个需要在document.ready上执行的函数,并且可用于window.onload函数......

我该怎么做?

$(document).ready(function someFunction() {
    execute something and pass the results to window.load
}
);


$(window).load(Need results of somefunction);​

3 个答案:

答案 0 :(得分:2)

您可以通过将函数调用分配给范围内的某个变量来共享函数调用的结果。

(function(){
   var result;
   $(document).ready(function(){
      result = 'something';
   });

   $(window).load(function() {
       console.log(result); //something
   });

}());

答案 1 :(得分:0)

function()参数传递给$(document).ready(fn)之类的内容时,实际上是在创建一个未命名的函数,即匿名函数。因此,如果您想为$(document).ready$(window).load获得相同的结果,您可以创建一个命名函数(如果您想共享函数本身):

function someFunction() {
    /* execute some code */
}

$(document).ready(someFunction);
$(window).load(someFunction);

由于我发现我首先误解了你的问题,让我解决一下。

在两个函数的范围内都有一个变量将使它们都使用它。因此,由于在全局命名空间中有一个变量,这不是一个好习惯,那么我们应该使用一个未命名的函数将你的两个函数包装在其中:

(function(){
  var accessible_var;
  $(document).ready( function() {
    accessible_var = "passed to load handler";
  } );

  $(window).load( function() {
    console.log(accessible_var);
  } );
})();

你必须小心这两个处理程序!

  

document.ready将在所有元素到位时触发,并且可以在JS代码中引用它们,但不一定要加载内容。

     

然而window.load将等待页面完全加载,包括内部框架,图像等。

     

警告 - 例如,如果您想使用图片的高度,宽度属性,那么document.ready就是一个交易制造者!!

(因为它写成here

答案 2 :(得分:0)

由于您需要在dom上做一些事情,然后在窗口加载时访问它,将窗口加载绑定方法嵌套在dom ready方法中。

$(document).ready(function () {
    // do something
    var somevar = "Hello World!";
    $(window).on("load", function () {
        console.log(somevar); // Hello World!;
    });
});