आईओएस 7 - सफारी में स्वाइप बैक और फॉरवर्ड कार्यक्षमता को अक्षम करने का एक तरीका है?


82

कुछ वेब पेजों के लिए हम मेनू को ऊपर खींचने के लिए iPhone की बाईं और दाईं कार्यक्षमता स्वाइप का उपयोग करते हैं। अब iOS7 के साथ, उन्होंने बाएं और दाएं गतियों पर ब्राउज़र इतिहास के पिछले और अगले पन्नों पर वापस जाने की क्षमता पेश की है।

लेकिन क्या विशिष्ट पृष्ठों के लिए इसे अक्षम करने का एक तरीका है ताकि स्वाइप क्रियाओं पर परस्पर विरोधी व्यवहार न हो?


इसे स्वाइप स्टार्टिंग ऑफस्क्रीन द्वारा प्रतिष्ठित किया जाना चाहिए। क्या आपके पास एक उदाहरण वेबपेज है जहां संघर्ष होता है?
रूपर्ट रॉन्सले

@RupertRawnsley, कंसोल .log ('FIRED!') के साथ अपने वेब पेज पर एक टचस्टार्ट / टचमोव इवेंट जोड़ें; इस में। अपनी उंगली को किनारे से वेब पेज पर ले जाएं और आप देखेंगे कि घटना कभी आग नहीं लगेगी। क्या मैं यह मानने में सही हूं कि यह नया अपेक्षित व्यवहार होगा?
मार्कस

2
इसके लिए + 1। परेशानी जब आप एक मेनू खोलने के लिए स्वाइप करें।
13

2
+1 उपयोगकर्ता को इस बात का कोई पता नहीं है कि एक ऑनस्क्रीन स्वाइप बनाम ऑफ़स्क्रीन स्वाइप क्या है। Blergh!
जोसेफ जुहंके

1
खराब दृष्टि वाले उपयोगकर्ता के रूप में मुझे बहुत अधिक ज़ूम करने और पैन करने की आवश्यकता है, जो कि स्वाइप बैक जेस्चर मुझे पागल बनाता है। अगर किसी को पता है कि इसे कैसे निष्क्रिय करना है तो मैं जानना चाहता हूं।
ब्रेट रयान

जवाबों:



12

आप इसे सीधे अक्षम नहीं कर सकते, लेकिन देशी स्वाइप बैक केवल तभी होता है जब ब्राउज़र इतिहास में कुछ होता है।

यह हर मामले में काम नहीं करेगा, लेकिन अगर आपके पास एक नया पेज एक एकल वेब पेज खुलता है, तो आप इसका उपयोग करके इतिहास में जोड़ने से रोक सकते हैं

window.history.replaceState(null, null, "#" + url)

इसके बजाय पुशस्टेट या

document.location.hash = url

5
हां लेकिन यह नेविगेट करने पर ऐप में केवल इतिहास को रोकता है। अन्य ऐप्स ने भी एक इतिहास को आगे बढ़ाया होगा, इसलिए iOS उन इतिहासों का भी पता लगाएगा।
यार

5

मुझे 2 दृष्टिकोणों का उपयोग करना था:

1) CSS केवल Chrome / Firefox के लिए ठीक है

html, body {
    overscroll-behavior-x: none;
}

2) सफारी के लिए जावास्क्रिप्ट फिक्स

if (window.safari) {
    history.pushState(null, null, location.href);
    window.onpopstate = function(event) {
        history.go(1);
    };
}

समय के साथ, सफारी ओवरक्रोल-व्यवहार-एक्स को लागू करेगी और हम जेएस हैक को हटाने में सक्षम होंगे


मैंने इसे और मैक पर जोड़ा, यह एक बाएं स्वाइप को ट्रिगर करने से रोकता है। हालाँकि, यह बैक कार्यक्षमता को पूरी तरह से तोड़ देता है (पीछे का बटन), इसलिए इसे वर्कअराउंड के रूप में उपयोग नहीं किया जा सकता है।
इमे विद

मेरे मामले में वह लक्ष्य था जब मैं एक सिंगल पेज ऐप बना रहा था
जॉन डोहर्टी

2
लेकिन यह अभी भी संभव है कि कोई अन्य वेबसाइट पर एक लिंक पर क्लिक करके आपके ऐप को खोलता है (यानी, यदि वह साइट आपके ऐप से लिंक करती है)। इसे ठीक करने के लिए, आपको अभी भी touchmoveईवेंट्स के माध्यम से स्वाइप जेस्चर का पता लगाना होगा और केवल उपरोक्त कोड को निष्पादित करना होगा यदि यह तुरंत स्वाइप से पहले नहीं था । यह संभव होना चाहिए।
इमे विद

मैंने इसे क्रोम और फ़ायरफ़ॉक्स के लिए एक सीएसएस केवल विकल्प शामिल करने के लिए अपडेट किया है
जॉन डोहर्टी

क्या आप सुनिश्चित हैं कि यह iOS पर काम करता है? मैंने अभी overscroll-behavior-x: none;iOS 13 पर क्रोम पर परीक्षण किया है और इसका स्वाइप-नेविगेशन व्यवहार पर कोई प्रभाव नहीं पड़ा है। बाएं किनारे पर दाईं ओर स्वाइप करने पर वापस चला जाता है (और यदि यह टैब इतिहास का पहला पृष्ठ है, तब भी यह होम स्क्रीन पर वापस आ जाता है)।
नक्तिनियां
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.