2012-06-27 38 views
6

Tôi có một trang web ASP.Net hiện đang hoạt động trên iOS4 nhưng không hoạt động trên iOS5.JavaScript setTimeout không kích hoạt sau Window.Open

Trên trang web chính, tôi có nút mở cửa sổ con. Và tôi làm một điều làm mới setTimeout trong cửa sổ cha ngay sau khi gọi cửa sổ mở.

Tôi nhận thấy trên iPhone iOS5 rằng khi nó mở cửa sổ con, hàm setTimeout trong trang mẹ không được gọi cho đến khi tôi quay lại cửa sổ chính và sau đó quay lại cửa sổ con để xem cập nhật.

Dưới đây là một đoạn mã của tôi trong trang mẹ và nơi tôi nghĩ là vấn đề

WindowManager.OpenWindow('...') 
t = setTimeout(function() { handles[0].testfx(); }, 1000); 

này chạy trên iOS4 nhưng không phải trên iOS5.

Bất kỳ ý tưởng nào?

+3

Không có chi tiết về cách bạn làm mới, tôi không nghĩ rằng bất kỳ ai cũng có thể trợ giúp. –

+2

Có lẽ ISO5 đang ngừng thực thi javascript khi trang ở chế độ nền để tiết kiệm pin hoặc tương tự. – Aristos

Trả lời

3

iOS5 thực sự tạm dừng JavaScript khi cửa sổ không phải là cửa sổ đang hoạt động. Không có gì bạn có thể làm về điều này, vì vậy tốt nhất bạn có thể làm là cố gắng thay đổi thiết lập của bạn để JavaScript không cần phải chạy khi cửa sổ của bạn ở chế độ nền.

Bạn nói bạn đang thực hiện setTimeout refresh thing in the parent window. Tại sao anh làm điều này? Thành thật mà nói, có vẻ hơi lạ - tại sao bạn muốn làm mới bất cứ điều gì khi người dùng thậm chí không thể nhìn thấy trang của bạn? Chính xác thì dòng handles[0].testfx(); làm gì cho bạn?

+1

Có thể có nhiều lý do để tiếp tục xử lý JS trong khi cửa sổ không hoạt động. Trên đỉnh đầu của tôi, người ta có thể giữ một số loại kết nối với máy chủ trong một khoảng thời gian ngắn để người dùng không phải luôn thiết lập lại kết nối hoặc thông tin xác thực khi họ chuyển về trang. –

+0

Tôi nghĩ rằng chrome đang làm một cái gì đó tương tự, sẽ rất hữu ích để điều tra điều này. – Guillaume86

2

Đây chỉ là một gợi ý, vì tôi không có quyền truy cập để kiểm tra điều này, nhưng bạn có thể hack xung quanh việc này bằng cách sử dụng window.postMessage. Một ví dụ về điều này có thể được tìm thấy here.

Trong trường hợp của bạn, bạn có thể muốn kiểm tra xem một khoảng thời gian cần thiết đã trôi qua chưa và nếu không, hãy gọi lại window.postMessage, nếu không, hãy gọi trình xử lý của bạn.

Tôi không chắc chắn cuộc gọi nhanh đến window.postMessage sẽ được xử lý như thế nào, nếu có, khi không ở trong cửa sổ hiện hoạt.

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