spec यदि उपयोगकर्ता केवल (के रूप में करने का विरोध किया की अनुमति के लिए अनुरोध को खारिज करते हुए वास्तव में पर किया जाए या नहीं एक कॉलबैक निष्पादित किया जाना चाहिए या टिप्पणी नहीं है इंकार बटन) पर क्लिक:
दोनों getCurrentPosition
और watchPosition
के लिए, कार्यान्वयन एफआईआर बिना successCallback
आह्वान कभी नहीं होना चाहिए स्थान साझा करने के लिए उपयोगकर्ता से अनुमति प्राप्त नहीं की। इसके अलावा, कार्यान्वयन को ऊपर वर्णित getCurrentPosition
या watchPosition
किसी भी निष्पादन को निष्पादित करने से पहले स्थान साझा करने के लिए उपयोगकर्ता की अनुमति हमेशा प्राप्त करनी चाहिए। यदि उपयोगकर्ता अनुमति देता है, तो ऊपर वर्णित अनुसार उचित कॉलबैक लागू किया जाना चाहिए। यदि उपयोगकर्ता अनुमति से इनकार करता है, तो errorCallback
(यदि मौजूद है) को कोड PERMISSION_DENIED
के साथ लागू किया जाना चाहिए, चाहे उपरोक्त चरणों में किसी भी अन्य त्रुटि का सामना किया जाए। उपयोगकर्ता अनुमति प्राप्त करने में व्यतीत समय को timeout
PositionOptions
पैरामीटर की विशेषता द्वारा कवर अवधि में शामिल नहीं किया जाना चाहिए। timeout
विशेषता केवल स्थान अधिग्रहण ऑपरेशन पर लागू होनी चाहिए।
मैं कहूंगा कि अनुमति अनुरोध को खारिज करना getCurrentPosition
के दृष्टिकोण से अनुरोध को अस्वीकार करने के बराबर है। डेनी पर क्लिक करना स्पष्ट है जबकि बर्खास्तगी (एक्स पर क्लिक करना) अंतर्निहित है।
कार्यात्मक रूप से, अंतर यह है कि डेनी बटन पर क्लिक करने का मतलब है (1) वर्तमान अनुरोध अस्वीकार कर दिया गया है, और (2) साइट कालीसूचीबद्ध है और उपयोगकर्ता को साइट के लिए फिर से स्थान साझा करने के लिए संकेत नहीं दिया जाएगा; केवल अनुरोध को खारिज करने का मतलब है कि वर्तमान अनुरोध – भविष्य के अनुरोधों से इनकार कर दिया गया है (भविष्य में BROWSINGCONTEXT एस — पृष्ठ को फिर से लोड करने के बाद) फिर से संकेत दिया जाएगा।
मेरी राय में, क्रोम, Firefox और IE के वर्तमान व्यवहार को एक बग – है सभी तीन कुछ नहीं कर उपयोगकर्ता एक्स अगर जियोलोकेशन अनुमति अनुरोध किसी भी वजह से खारिज कर दिया है errorCallback
बुलाया जाना चाहिए पर क्लिक करके अनुमति अनुरोध को खारिज करता है, तो वर्तमान BROWSINGCONTEXT में getCurrentLocation
पर और कॉल चुपचाप विफल हो जाएंगी। (ओपेरा 11।52 बर्ताव करती है 'सही ढंग से' क्योंकि इसकी अनुमति अनुरोध यूआई केवल अनुमति दें है/बटन – कोई एक्स अस्वीकार करें)
मोज़िला एक bug वे कहाँ का कहना है कि वर्तमान व्यवहार सही है और एक नए bug खुला बग कि प्रासंगिक है है; Chromuim also says वर्तमान व्यवहार सही है। आईई a bug(पंजीकरण आवश्यक), लेकिन विचित्र रूप से, माइक्रोसॉफ्ट ने इसे गैर-पुन: उत्पन्न करने योग्य के रूप में बंद कर दिया।
यह वास्तव में ऐसा कुछ है जिसे डब्ल्यू 3 सी कार्यकारी समूह को संबोधित करने की आवश्यकता है। पेज गिरावट स्थान अनुमति अनुरोध – कि क्या स्थायी रूप से इनकार किया है या सिर्फ एक्स
केवल एक चीज है कि आप वास्तव में अभी क्या कर सकते हैं इस स्थिति से निपटने के लिए क्लिक करके इस सत्र के लिए मना कर दिया है उपयोगकर्ता के लिए प्रतिक्रिया करने के लिए सक्षम होना चाहिए अपना खुद का टाइमआउट सेट कर रहा है। जियोलोकेशन अनुरोध में एक समाप्ति सेट, और फिर उस से अधिक समय होने के लिए अपने त्रुटि समाप्ति सेट (उपयोगकर्ता समय अनुरोध करने के लिए प्रतिक्रिया करने के लिए अनुमति देने के लिए):
if (navigator.geolocation) {
var etimeout = setTimout(onError, 10000);
navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout:5000});
}
function onSuccess(pos) {
clearTimeout(etimeout);
// ...
}
function onError(err) {
clearTimeout(etimeout);
// Note `err` will actually be undefined if this is the result of our timeout
// and anything you do here should be undone by `onSuccess` (in case the user
// took longer than 5 seconds to approve the request; for that reason, you
// shouldn't display any modal UI from here.
// ...
}
मैंने पहले इस मुद्दे पड़ा है और किसी भी नहीं मिल सका उस समय समाधान, मुझे संदेह है कि अभी भी कोई समाधान हैं। –
वह व्यवहार उन ब्राउज़रों में कॉन्फ़िगर करने योग्य है। मेरा भी पूछना नहीं है, इसलिए मैं कभी भी "प्रॉम्प्ट बंद नहीं करता"। मेरा हमेशा निंदा करने के लिए कॉन्फ़िगर किया गया है। मैं "अस्वीकार" के रूप में व्यवहार करने के लिए "करीबी" की अपेक्षा करता हूं। –
@StephenP: यदि आपने क्रोम को "कभी नहीं पूछने" के लिए कॉन्फ़िगर किया है, तो यह वास्तव में तुरंत 'त्रुटि कॉलबैक' (जैसे कि आपने अस्वीकार किया है) को तुरंत निकाल दिया है। फ़ायरफ़ॉक्स कुछ भी नहीं करता है। – josh3736