Tôi có trang có một số javascript cần chạy khi tải trang. Javascript nói cần phải xác định vị trí các thành phần phía máy khách của một ServerControl, mà nó làm với $ find().
Tất nhiên, nếu tôi phát trực tiếp mã của tôi lên trang, nó thực thi khi trang đang được đọc và không thành công vì không có gì tùy thuộc vào việc được khởi tạo.
Nếu tôi đặt mã của tôi bên trong một hàm pageLoad(), nó chạy tốt, vì asp.net tự động kết nối một trình xử lý tải lên cho bất kỳ hàm nào có tên pageLoad(). Vấn đề là tôi thực sự không thích giải pháp pageLoad() - chủ yếu là vì nó là một tên toàn cầu duy nhất. Nếu tôi thực hiện một số mã bằng cách sử dụng pageLoad(), tôi chỉ biết rằng một số lập trình viên khác sẽ sao chép phương pháp, một nơi nào đó không phù hợp và chúng tôi sẽ kết thúc với một trang bao gồm hai hoặc nhiều hàm pageLoad() khác nhau, và kết quả sẽ là một loạt các lỗi bí ẩn mà sẽ mất mãi mãi để theo dõi.
Vì vậy, tôi đặt mã của tôi bên trong một hàm ẩn danh được chuyển đến $ jquery (tài liệu) .ready(). Điều này không thành công, vì nó chạy trước khi thành phần phía máy khách của ServerControl tồn tại.
Vì vậy, tôi đặt mã của tôi bên trong một hàm ẩn danh được chuyển bởi Sys.Application.add_load(). Điều này cũng không thành công, bởi vì Sys là không xác định.
Vì vậy, cuối cùng tôi đã giải quyết việc đặt mã của mình bên trong Sys.Application.add_load(), và sau đó đặt nó bên trong một hàm được gọi bởi $ (document) .ready(). Điều này làm việc, nhưng nó cho gần như nhiều ợ nóng như pageLoad().
<script type="text/javascript">
$(document).ready(function(){
Sys.Application.add_load(function(){
var component = $find(<clientid>);
if (component) { <do something> }
});
});
</script>
Phải có cách xử lý tốt hơn.
Bất kỳ ý tưởng nào?
Điều đó có vẻ phù hợp với chúng tôi. –