2011-01-09 37 views
20

Có được phép sử dụng <body onLoad="myfunc()"> cùng với bộ xử lý document.ready() của jQuery không? Tôi không thể tìm thấy cách để đạt được cùng chức năng của <body onLoad> với jQuery.jQuery tương đương với body onLoad

Ví dụ về trường hợp sử dụng sẽ là ứng dụng facebook. Ứng dụng Facebook khung nội tuyến yêu cầu sử dụng chức năng FB.Canvas.setSize thay đổi kích thước khung nội tuyến.

Tôi chỉ cần kích hoạt khi tất cả các thành phần trên trang tải xong.

Trả lời

29

$(window).load(myfunc) là những gì bạn đang tìm kiếm. Nếu bạn đang làm việc với sự kiện tải của khung nội tuyến, bạn có thể thay thế window bằng phần tử/bộ chọn khung nội tuyến.

+0

Trong trường hợp tôi có thể tạo iFrame động sau này, nó có vẻ như nó không phải là có thể sử dụng .live() và tải .. là có bất kỳ giải pháp cho điều đó ? – Joel

+1

Sau khi tạo iframe (ví dụ: 'var iframe = document.createElement ('iframe');'), bạn có thể chuyển cho nó một sự kiện gọi lại tải với '$ (iframe) .load (myfunc);'. Tôi sẽ khuyên bạn nên làm điều này trước khi đính kèm nó vào DOM và/hoặc thiết lập thuộc tính 'src' của nó. – Kevin

+0

Tôi đã thử sử dụng cả $ (window) .load (FB.Canvas.setSize()) và jQuery (document) .loadFB.Canvas.setSize()). Tuy nhiên, không ai trong số họ thay đổi kích thước cửa sổ trái ngược với việc sử dụng thực hiện công việc. Có vẻ như họ hành động khác nhau – Joel

0

Hãy thử load():

jQuery(document).load(myfunc) 
+1

Tôi không nghĩ rằng bạn muốn chuyển giá trị trả về của 'myfunc' đến sự kiện' tải';) – Kevin

+0

Vui lòng xem nhận xét cuối cùng của tôi cho câu trả lời của Kevin – Joel

4

Từ API jQuery trên handler ready: Phương pháp

Các .ready() thường là không phù hợp với onload < body = "" > thuộc tính . Nếu tải phải được sử dụng, hoặc không sử dụng .ready() hoặc sử dụng Phương thức .load() của jQuery để đính kèm tải trình xử lý sự kiện vào cửa sổ hoặc các mục cụ thể hơn, như hình ảnh.

3

này hoạt động cũng như:

$(window).load(function(){ 
    // .. 
    myfunc(); 
    // .. 
}); 
+0

Cách này cải thiện câu trả lời được chấp nhận? Có nhiều phương pháp tiết kiệm hơn để làm điều này .... –

Các vấn đề liên quan