2012-07-16 29 views
11

Tôi đã thực hiện khá nhiều việc tìm kiếm giải pháp cho vấn đề này nhưng cho đến nay vẫn chưa tìm được giải pháp nào hoạt động trên trình duyệt chéo.Cách phát hiện khi innerHTML hoàn thành

Những gì tôi cần là chức năng javascript thô sẽ lấy một phần tử và chạy một cuộc gọi lại khi innerHTML đã được chèn thành công vào dom.

ví dụ:

var element = document.getElementById('example'); 
     element.innerHTML = newhtml; 

    waitUntilReady(element, function(){ 
      //do stuff here... 
    }); 

Vì vậy, để tóm tắt, tôi cần kiểm tra nội dung của phần tử và kích hoạt gọi lại khi innerHTML hoàn tất.

Cảm ơn trước vì đã được trợ giúp.

+1

Điều gì khiến bạn nghĩ rằng bạn cần gọi lại? –

+0

@ không phải tôi - Xin vui lòng xem bình luận của tôi dưới đây để câu trả lời của Kolink – gordyr

+1

Đây có phải là những gì bạn đang tìm kiếm không? http://james.padolsey.com/javascript/asynchronous-innerhtml/ – noj

Trả lời

5

Không cần có chức năng như vậy. Chỉ định cho innerHTML sẽ thực hiện ngay lập tức trước khi tiếp tục chạy bất kỳ tập lệnh nào.

Nếu bạn thực sự cần trì hoãn thực hiện (nói để cho phép trình duyệt vẽ lại), hãy sử dụng setTimeout với độ trễ 1 (hoặc khoảng thời gian ngắn khác).

+1

Ahh, nếu đó thực sự là trường hợp thì tuyệt vời. Nhưng điều này vẫn để lại cho tôi với vấn đề ban đầu của tôi. Tôi tự động chèn một kịch bản ngay sau khi nối html mà gắn các sự kiện vào các phần tử nhất định chứa trong html mới. Trong khi điều này làm việc tốt trên hầu hết các trình duyệt cũ hơn IE 8 và dưới đây dường như được trả lại rằng các phần tử là null khoảng 50% thời gian. Giả định của tôi là điều này là do html mới được chèn vào không phải lúc nào cũng 'sẵn sàng' khi tôi đang cố gắng để attache sự kiện với nó. – gordyr

+0

Đảm bảo rằng các tập lệnh đang được thêm vào trang ở đâu đó sau khi phân bổ 'innerHTML' và không có lý do gì để nó không hoạt động. –

+0

Họ thực sự là như vậy. Tuy nhiên, nó vẫn có vẻ chỉ có tỷ lệ thành công 50% trong các phiên bản IE cũ hơn. Tôi cho rằng vấn đề phải nằm ở đâu đó trong mã của tôi và giả định của tôi về html không được 'sẵn sàng' là không chính xác. – gordyr

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