2015-03-10 15 views
10

Có thẻ nội dung Javscript từ xa trên trang HTML cục bộ mà tôi đang điều hướng qua WkWebView không bao giờ kết thúc tải xuống (trong cả hai trường hợp thiết bị iOS không được kết nối với internet hoặc internet của thiết bị quá chậm). Thật không may, WKWebView không bao giờ hủy bỏ việc cố gắng tải xuống tài sản này và cũng không bao giờ chuyển sang WKNavigationDelegate của tôi (tức là không -webView:didFailNavigation:withError: cũng không phải -webView:didFinishNavigation: neither được gọi), vì vậy người dùng bị kẹt với một trang HTML trống không bao giờ giải quyết hoàn toàn và không bao giờ lỗi ngoài. Rất may trong một số tình huống tôi đã gỡ rối thông qua trình gỡ lỗi Javascript từ xa của Safari, tôi nhận thấy rằng chúng tôi đã gặp lỗi Failed to load resource: The Internet connection appears to be offline đăng nhập vào bảng điều khiển, nhưng ở những người khác (như một số thiết bị nhất định trong Chế độ trên máy bay) WKWebView dường như không bao giờ hết thời gian chờ với lỗi này hoặc bỏ cuộc, vì vậy không có cuộc gọi lại WKNavigationDelegate bị sa thải. Bạn có thể tự tạo lại kịch bản này bằng cách sử dụng trình mô phỏng iOS 8.2 với bất kỳ ứng dụng WKWebView iOS nào, điều hướng đến bất kỳ tệp HTML được phân phối cục bộ nào, sau đó thêm thẻ tập lệnh với bất kỳ URL từ xa nào, sau đó điều chỉnh kết nối Internet của bạn thành "100 % Loss "sử dụng số điện thoại Network Link Conditioner của Apple.WKWebView không kết thúc/hết thời gian chờ khi không có truy cập internet

Cách tốt nhất để buộc WkWebView hết thời gian chờ/trả lại thông qua lỗi hoặc gọi lại thành công cho WKNavigationDelegate của nó là gì?

Trả lời

0

Tôi nghĩ bạn sẽ phải thực hiện việc này trong trang HTML của mình. Bạn có thể bao gồm một JavaScript nhỏ ở đó chạy một bộ đếm thời gian và kiểm tra xem kịch bản từ xa của bạn đã tải hay chưa.

Nếu nó không được tải thì JavaScript có thể hiển thị lỗi trực tiếp trên trang hoặc thông báo cho ứng dụng của bạn thông qua trình xử lý tin nhắn tập lệnh.

(Tôi không nghĩ HTML có một API mà một trang có thể sử dụng để tìm hiểu về các lỗi tải nội dung Có một số gợi ý về điều đó trên Verify External Script Is Loaded.)

+0

Làm cách nào để kiểm tra Javascript để xem liệu thẻ HTML tập lệnh từ xa đã tải xong chưa? Tập lệnh từ xa chạy mọi thứ trong một hàm được gọi ngay lập tức, vì vậy không có biến toàn cục nào tôi có thể kiểm tra sự tồn tại của. – depthfirstdesigner

13

Hãy thử:

WKNavigationDelegate

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error 

bạn có thể kiểm tra lỗi, thông thường bạn sẽ có một error.code -1009:

Kiểm tra danh sách này: Error Codes

+1

Đây phải là câu trả lời được chấp nhận. – superpuccio

+2

-1 Phương pháp này sẽ không được gọi trong một thời gian rất dài và do đó không phải là câu trả lời. Tôi đã xem một phút trôi qua trước khi '-webView :: didFinishNavigation:' được gọi. Câu hỏi OP thực sự là ở đoạn cuối. – David

+1

Không cho tôi gần như ngay lập tức khi ở chế độ trên máy bay; upvoted. –

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