2012-01-06 40 views
17

Sự cố chung

Trong Javascript, tôi cần được thông báo khi có lỗi khi tải URL và ghi đè hành vi mặc định. Ví dụ, thực hiện như sau trên iOS Safari ...Làm cách nào để ghi đè sự kiện lỗi window.location?

window.location = 'http://pageDoesNotExist.badFormatting'; 

... sẽ bật lên thông điệp cảnh báo này ...

mobile safari canno open page

Tôi muốn đính kèm một người biết lắng nghe cho một lỗi như vậy và làm điều gì đó thay vì hiển thị hộp cảnh báo xấu.

vấn đề cụ thể của tôi

Khi người dùng chạm vào một nút, tôi cần phải khởi động ứng dụng của tôi nếu nó được cài đặt, nếu không tôi cần phải mở App Store cho cô ấy để tải về ứng dụng của tôi. Các accepted solution là:

// Attempt to open app 
window.location = 'myApp://'; 

// If app fails to open, will open app store 0.5 seconds later 
window.setTimeout(
    function() { 
     window.location = 'http://itunes.apple.com/myAppId'; 
    }, 
    500 
); 

Vấn đề ở đây là các window.location đầu tiên mở ra hộp cảnh báo xấu xí khi ứng dụng không được cài đặt. Mã sẽ sau đó dự phòng vào App Store. Khi người dùng trở về từ App Store trở lại Safari, hộp cảnh báo xấu xí vẫn còn đó. Theo như tôi biết window.onerror không kích hoạt trên Safari trên thiết bị di động.

+0

Hãy xem này - http://stackoverflow.com/questions/1108693/is-it-possible-to-register-a-httpdomain-based-url-scheme-for-iphone-apps-like/1109200#1109200 – mrtsherman

+1

Tôi nghĩ bạn sẽ phải có một trình duyệt plug-in để làm một cái gì đó như thế này bởi vì, phần nào theo định nghĩa, khi lỗi này đi lên, không có trang hoạt động và do đó không có javascript trang của bạn. Vì vậy, javascript sẽ phải được xây dựng vào trình duyệt - do đó, suy nghĩ của việc sử dụng một plug-in. – jfriend00

+0

Bạn có xem qua [giải pháp] này (http://stackoverflow.com/a/1404662/371392) trước tiên không? –

Trả lời

3

Giải pháp của bạn là here.

Về cơ bản, bạn có thể sử dụng cookie để xác định thời tiết ứng dụng của bạn được cài đặt hay không.

+0

Làm cách nào để cookie biến mất một cách kỳ diệu? – JoJo

+0

Họ không. Chúng chỉ ở đây để xác định 'customurl: //' có thể được sử dụng hay không. –

+0

Lần đầu tiên người dùng nhấn vào nút và cookie không có ở đó như thế nào? Và làm thế nào là cookie trong đồng bộ với cài đặt ứng dụng của bạn? Khi bạn xóa ứng dụng, cookie sẽ bị sai. – JoJo

-1

Thêm một object với width="0" thuộc tính để đánh dấu, sử dụng URL trang như là giá trị của thuộc tính data, sau đó đi đến iTunes nếu URL chuyển hướng đến một 404:

/* Find object element */ 
var hrefobj = document.querySelector("object"); 

/* Assign protocol string to data attribute of object element */ 
hrefobj.data = 'myApp://'; 

/* If the assignment fails */ 
if (hrefobj.data !== 'myApp://') 
    { 
    /* Redirect the window to the fallback URL */ 
    window.location = 'http://itunes.apple.com/myAppId'; 
    } 
+0

Lỗi trong iFrames vẫn bật lên các tin nhắn trong iOS. Nó không có trong Android. – JoJo

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