簡體   English   中英

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

[英]Javascript code availability for both window.load and document.ready

我需要一個需要在document.ready上執行並且可用於window.onload函數的函數...

我怎樣才能做到這一點?

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


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

您可以通過將函數調用的結果分配給作用域中的某個變量來共享結果。

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

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

}());

當將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無疑是一個大難題!

(因為它是寫在這里

由於您需要在dom ready上做一些事情,然后在窗口加載時訪問它,因此將窗口加載綁定方法嵌套在dom ready方法內。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM