2012-01-06 13 views
17

सामान्य समस्या

जावास्क्रिप्ट में, मुझे URL को लोड करने में त्रुटि होने पर डिफ़ॉल्ट व्यवहार को ओवरराइड करने पर अधिसूचित होने की आवश्यकता है। उदाहरण के लिए, को क्रियान्वित करने आईओएस सफारी पर निम्नलिखित ...आप window.location त्रुटि ईवेंट को ओवरराइड कैसे करते हैं?

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

... यह अलर्ट संदेश पॉप अप होगा ...

mobile safari canno open page

मैं ऐसे एक त्रुटि के लिए एक श्रोता संलग्न चाहते हैं और बदसूरत चेतावनी बॉक्स दिखाने के लिए कुछ करें।

मेरे विशिष्ट समस्या

एक उपयोगकर्ता एक बटन टैप करता है, मैं और मैं उसे अपनी एप्लिकेशन डाउनलोड करने के लिए App स्टोर खोलने की आवश्यकता है, अगर यह स्थापित किया गया है मेरी एप्लिकेशन को लॉन्च करने की जरूरत है। accepted solution है:

// 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 
); 

समस्या यहां है कि पहली window.location बदसूरत चेतावनी बॉक्स खुल जाता है जब एप्लिकेशन इंस्टॉल नहीं है है। कोड तब ऐप स्टोर में फॉलबैक होगा। जब उपयोगकर्ता ऐप स्टोर से वापस सफारी में वापस आ जाता है, तो बदसूरत अलर्ट बॉक्स अभी भी वहां है। जहां तक ​​मुझे पता है कि window.onerror मोबाइल सफारी पर आग नहीं लगाती है।

+0

इस पर एक नजर डालें - http://stackoverflow.com/questions/1108693/is-it-possible-to-register-a-httpdomain-based-url-checheme-for-iphone-apps-like/1109200#1109200 – mrtsherman

+1

मुझे लगता है कि आप करेंगे इस तरह कुछ करने के लिए ब्राउज़र प्लग-इन होना चाहिए क्योंकि, कुछ हद तक परिभाषा के अनुसार, जब यह त्रुटि आती है, तो कोई सक्रिय पृष्ठ नहीं होता है और इस प्रकार आपका कोई भी पृष्ठ जावास्क्रिप्ट नहीं होता है। इसलिए, जावास्क्रिप्ट को ब्राउज़र में बनाया जाना होगा - इस प्रकार प्लग-इन का उपयोग करने का विचार। – jfriend00

+0

क्या आपने इस [समाधान] (http://stackoverflow.com/a/1404662/371392) को पहले देखा था? –

उत्तर

3

आपका समाधान here है।

असल में, आप कुकीज का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि आपका एप्लिकेशन इंस्टॉल हो या नहीं।

+0

कुकीज जादुई रूप से त्रुटि संदेश कैसे गायब हो जाते हैं? – JoJo

+0

वे नहीं करते हैं। वे केवल यह निर्धारित करने के लिए यहां हैं कि 'customurl: //' का उपयोग किया जा सकता है या नहीं। –

+0

उपयोगकर्ता पहली बार बटन को टैप करता है और कुकी वहां नहीं है? और कुकी आपके ऐप इंस्टॉलेशन के साथ सिंक में कैसी है? जब आप ऐप हटाते हैं, तो कुकी गलत होगी। – JoJo

-1

मार्कअप को width="0" विशेषता के साथ एक object जोड़ें, data विशेषता के मान के रूप में पृष्ठ URL का उपयोग तो iTunes करने के लिए जाने के लिए कि URL 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

iFrames में त्रुटियां अभी भी आईओएस में संदेश पॉप अप करती हैं। हालांकि यह एंड्रॉइड में नहीं है। – JoJo

संबंधित मुद्दे