2009-09-04 27 views
10

Tôi đang xây dựng một trang web bằng cách sử dụng ASP.NET MVC và tôi có một số chế độ xem sử dụng jQuery để thực hiện nhiều việc khác nhau. Tôi đã nghĩ đến việc chuyển sang API AJAX của Google và sử dụng trình tải của họ để tải jQuery. Tuy nhiên, tôi nhận thấy rằng tôi sẽ không còn có thể sử dụng $(document).ready() nữa vì trình tải của Google chỉ định một cuộc gọi lại google.setOnLoadCallback().Bạn có sử dụng google.setOnLoadCallback nhiều lần không?

Đây là một vấn đề nhỏ đối với tôi bởi vì tôi có $(document).ready() trong các chế độ xem từng phần vì chúng làm những việc khác nhau cụ thể với bản thân mà tôi không muốn.

Tôi có thể chỉ định nhiều cuộc gọi lại và chỉ cần hoán đổi số $(document).ready() với google.setOnLoadCallback(someUniqueCallbackFunction)?

Đó có phải là cách lý tưởng để xử lý tình huống này hoặc có điều gì đó khác được ưu tiên không?

+0

Đối với các chế độ xem một phần này, bạn có hiển thị chúng với trang hoặc động lực (ví dụ: thông qua tab ajax) không? – jmarnold

+0

Trong một trang thông thường. Tôi không sử dụng AJAX vào thời điểm này. – Joseph

Trả lời

0

Tôi có thể bị thiếu điểm ở đây nhưng không có xung đột giữa người dùng của bạncontrol $ (tài liệu) .ready và google.setOnLoadCallback mà tôi biết.

Giả sử bạn đang sử dụng google để tải jquery, mã của bạn trong $ (tài liệu) .ready sẽ không chạy cho đến khi google đã tải jquery anyway.

Miễn là jQuery đang được tải trong trang chính của bạn, không chắc chắn vấn đề là gì.

+0

Tôi sẽ thử điều đó và xem nó có hoạt động không. Tôi đã thử bằng cách sử dụng setOnLoadCallback và $ (tài liệu). Đã có trong cùng một tệp html trên Google API Playground và nó không thích điều đó. Có lẽ tôi ok với điều khiển người dùng, mặc dù! – Joseph

+1

Điều đó dường như hoạt động tốt. Tôi có một tập tin Master sử dụng google.load (jquery) và sau đó trong một cái nhìn tôi đang sử dụng $ (document) .ready và nó hoạt động tốt! – Joseph

32

Có, bạn có thể sử dụng setOnLoadCallback thay cho $(document).ready. Có một THỨ HAI THỨ HAI không có giấy tờ (hoặc ít nhất, tôi không thể tìm thấy nó) chỉ định thời điểm gọi hàm gọi lại; giá trị có thể là "false" (mặc định) - trên tải cửa sổ hoặc "true" - trên tải DOM (DOMContentLoaded). Sự kiện DOM kích hoạt khi tất cả đánh dấu đã tải (sớm hơn nhiều so với window.load). Sự kiện tải cửa sổ kích hoạt sau khi tất cả các hình ảnh và tập lệnh và như vậy đã tải xong.

// Very similar to $(document).ready() 
google.setOnLoadCallback(OnLoad, true); 

// Very similar to $(window).load() 
// Same as google.setOnLoadCallback(OnLoad, false); 
google.setOnLoadCallback(OnLoad); 

Có, bạn có thể sử dụng setOnLoadCallback nhiều lần trên một trang duy nhất. Đây là một tính năng rất quan trọng của AJAX API (không có giấy tờ như của bài viết này). Mỗi khi bạn gọi setOnLoadCallback, nó sẽ ngăn xếp tất cả các hàm được gọi khi tải DOM hoặc cửa sổ.

+0

Đây là những gì đã giúp tôi. Tôi ước điều này được tài liệu tốt hơn. – mdoar

+0

Bạn vừa mới làm một ngày của tôi. – Wistar

+0

Hiện tại, [tài liệu] (https://developers.google.com/chart/interactive/docs/basic_multiple_charts) mà 'setOnLoadCallback' có thể được gọi nhiều lần. – GSerg

1

Tôi đã gặp phải sự cố tương tự. Tôi googled có 2 tìm kiếm google chạy trên một trang, vv ...

Cuối cùng tôi tìm thấy điều này và bởi vì tôi muốn có 2 bảng về cơ bản hiển thị kết quả tìm kiếm của google trên một trang.

google.setOnLoadCallback(LoadGoogleNewsResults); 
google.setOnLoadCallback(LoadGoogleNewsResultsForum); 

này làm việc cho tôi :)

Mã này là trên http://login.debt-line.org.uk, chỉ cần nhấp vào xem nguồn.

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