2014-04-10 4 views
26

में उपयोग के लिए क्रोम चुंच ज़ूम अक्षम करें हम कियोस्क मोड में क्रोम का उपयोग कर रहे हैं और गलती से उपयोगकर्ता चुटकी ज़ूम समर्थन के हालिया जोड़े के साथ ज़ूम करने के लिए आवेदन कर रहे हैं। वे सोचते हैं कि उन्होंने इसे तोड़ दिया है और एक टूटी हुई स्थिति में एप्लिकेशन (और बाद में 55 "टच स्क्रीन) छोड़कर चले गए हैं।कियोस्क

अब काम करने वाली एकमात्र चीज 2 से अधिक स्पर्श घटनाओं के लिए ईवेंट प्रचार रोक रही है अंक। इसके साथ मुद्दे हम उस मामले में मल्टीटाउच ऐप्स नहीं कर सकते हैं और यदि आप तेजी से कार्य करते हैं तो ब्राउजर जावास्क्रिप्ट से पहले प्रतिक्रिया करता है। हमारे परीक्षणों में अभी भी उपयोगकर्ताओं द्वारा दुर्घटना पर होता है।

मैंने मेटा टैग किया है, वे काम नहीं करते हैं। ईमानदारी से मैं चाहता हूं कि मैं क्रोम ज़ूमिंग को अक्षम कर सकता हूं लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है।

मैं ब्राउज़र को ज़ूमिंग से कैसे रोक सकता हूं?

उत्तर

48

हमें एक ही समस्या है, यह ब्राउज़र ज़ूमिंग के रूप में प्रकट होता है लेकिन जावास्क्रिप्ट को कोई स्पर्श ईवेंट नहीं मिलता है (या कभी-कभी ज़ूमिंग शुरू होने से पहले केवल एक बिंदु)।

हमने पाया है इन संभव (लेकिन संभवतः नहीं लंबे समय तक) समाधान:

1. अक्षम चुटकी/कड़ी चोट सुविधाओं जब कियोस्क मोड

का उपयोग कर इन कमांड लाइन सेटिंग्स में बने रहना चाहते हैं क्रोम, आप कर सकते हैं निम्नलिखित:

chrome.exe --kiosk --incognito --disable-pinch --overscroll-history-navigation=0 
  • --disable-पिंच - अक्षम कर देता है पिंच-टू-जूम कार्यक्षमता
  • --overscroll-इतिहास-नेविगेशन = 0 - कड़ी चोट से नेविगेट कार्यक्षमता

2. चुटकी क्रोम झंडे क्रोम का उपयोग कर ज़ूम अक्षम अक्षम कर देता है: // flags/# सक्षम-चुटकी

अपने ब्राउज़र में यूआरएल क्रोम: // झंडे/# सक्षम-चुटकी पर नेविगेट करें और सुविधा को अक्षम करें।

चुटकी ज़ूम सुविधा वर्तमान में प्रयोगात्मक है लेकिन डिफ़ॉल्ट रूप से चालू है जिसका अर्थ है कि यह भविष्य के संस्करणों में बल-सक्षम होगा। यदि आप कियोस्क मोड में हैं (और हार्डवेयर/सॉफ़्टवेयर को नियंत्रित करते हैं) तो आप शायद स्थापना पर इस सेटिंग को टॉगल कर सकते हैं और फिर क्रोम अपडेट को आगे बढ़ने से रोक सकते हैं।

Chromium Issue 304869 पर इस सेटिंग को हटाने के लिए पहले से ही एक रोडमैप टिकट है।

तथ्य यह है कि ब्राउज़र जावास्क्रिप्ट से पहले प्रतिक्रिया करता है यह निश्चित रूप से एक बग को रोक सकता है और Chromium bug tracker पर लॉग इन किया गया है। उम्मीद है कि यह सुविधा स्थायी रूप से सक्षम होने से पहले तय की जाएगी या उंगलियों से पार हो जाने पर वे इसे एक सेटिंग के रूप में छोड़ देंगे।

3।ज़ूमिंग बंद हो जाता है सभी छूता है, तत्व और घटनाओं अपने अनुप्रयोग

मिलान सभी परीक्षणों है कि हम का आयोजन किया गया है में के लिए श्वेत सूची अक्षम करें, दस्तावेज़ में preventDefault() जोड़ने (और अन्य सभी कड़ी चोट/स्पर्श घटनाओं) क्रोम में:

document.addEventListener('touchstart', function(event){ 
    event.preventDefault(); 
}, {passive: false}); 

यदि आप अपनी स्पर्श-आधारित कार्यक्षमता को डीओएम में उच्च संलग्न करते हैं, तो यह दस्तावेज़ की रोकथाम() कॉल पर बुलबुले से पहले सक्रिय हो जाएगा। क्रोम में EventListenerOptions पैरामीटर को शामिल करना भी महत्वपूर्ण है क्योंकि क्रोम 51 document-level event listener is set to {passive: true} by default के रूप में।

यह सामान्य ब्राउज़र सुविधाओं को अक्षम करता है जैसे स्क्रॉल करने के लिए स्वाइप करें, आपको शायद स्वयं को लागू करना होगा। यदि यह एक पूर्ण-स्क्रीन, गैर-स्क्रोल करने योग्य कियोस्क ऐप है, तो शायद ये सुविधाएं महत्वपूर्ण नहीं होंगी।

+1

झंडा ओर इशारा करते हुए के लिए धन्यवाद। उन्होंने इसे शुरू किया लेकिन अक्षम करने के लिए ध्वज नहीं लगाया। थोड़ी देर के लिए यह एक गंभीर मुद्दा था। हमारे पास हार्डवेयर पहुंच है ताकि कमांड लाइन को फायर कर दिया जा सके या सिर्फ ध्वज हमारे लिए बहुत अच्छा काम कर सके। –

6

जैसा कि इस पेज पर पहुंचने किसी को जानते हैं 'चुटकी ज़ूम करने के लिए' निष्क्रिय करने के लिए क्रोम में झंडा है अब है:

50 से ऊपर

गूगल क्रोम/क्रोमियम/कैनरी संस्करण:

chrome://flags/#touch-events

गूगल क्रोम/क्रोमियम/कैनरी संस्करण से कम 50 या पुराने संस्करणों:

chrome://flags/#enable-pinch

+0

# टच-इवेंट्स: पूर्ण टच स्क्रीन अक्षम करें न केवल पिन ज़ूम करें। तो संस्करण 50 से चुटकी हटा दी गई है और अब मौजूद नहीं है? क्या आप पुनः प्रयास कर सकते हैं? – YumYumYum

+0

अपेक्षाकृत पुरानी पोस्ट लेकिन मैं अब भी इस मुद्दे पर चल रहा हूं जहां मुझे केवल चुटकी ज़ूम अक्षम करने की आवश्यकता है। क्रोम 58 के साथ शानदार ढंग से काम किया, लेकिन क्रोमियम 51 में लॉन्च नहीं किया गया है। – KDT

0

संस्करण 51.0.2704.84 मीटर, क्रोम: // झंडे/# स्पर्श-घटनाओं सभी स्पर्श-घटनाओं को न केवल चुटकी कार्य अक्षम करता है। FYI करें। उम्मीद है कि, Google भविष्य में रिलीज में इस कार्यक्षमता को वापस कर देगा।

2

मैं एक ही मुद्दे से निपट रहा हूं। मुझे लगता है कि मैं इसे निम्नलिखित दृष्टिकोण

  • एचटीएमएल तत्व के सीएसएस पिक्सेल चौड़ाई का निर्धारण के साथ काफी अच्छा संभाल कर सकते हैं: document.documentElement.clientWidth
  • कियोस्क स्क्रीन के नाम से जाना जाता पिक्सेल चौड़ाई
  • यदि एचटीएमएल को यह माप की तुलना तत्व व्यापक है, स्क्रीन की तुलना में सीएसएस पिक्सल में, भौतिक पिक्सल में, इसका मतलब है कि यह
  • स्केल किया गया है यदि HTML तत्व स्केल किया गया है, तो बॉडी तत्व को क्षतिपूर्ति के लिए ज़ूम लागू करें। सूत्र है `body.style.zoom = htmlElementClientWidth/screenPhysicalPixelWidth

यह techique स्वचालित रूप से जो कुछ भी आकार वर्तमान विंडो है यूआई, जो विकास के लिए उपयोगी है अगर मैं पर विकसित कर रहा हूँ स्केलिंग का लाभकारी पक्ष प्रभाव पड़ता है लक्ष्य स्क्रीन से छोटी स्क्रीन।

स्क्रीन पिक्सेल बनाम सीएसएस पिक्सेल पर और अधिक, एचटीएमएल तत्व quirksmode.org पर उपलब्ध स्थान को भरने के तरीके के बारे में चर्चा करता है।

+0

क्रोम ध्वज में परिवर्तन के साथ यह वह तरीका है जिसे हम गए हैं। [यहां] (http://stackoverflow.com/questions/1713771/how-to-detect-page-zoom-level-in-all-modern-browsers) ज़ूम स्तर का पता लगाने पर एक अच्छा लिंक है। हम आकार बदलने की घटना सुनते हैं और सीएसएस के साथ समायोजित करते हैं। –

+0

@ डेनिसस्मोलेक क्या आप विस्तृत कर सकते हैं? कोड नमूना से लिंक करें? धन्यवाद – DeBraid

1

एक अन्य समाधान है कि वर्तमान में क्रोम में काम करता है (54) 'touchstart' घटना के लिए एक घटना श्रोता जोड़ सकते हैं और targetTouches या touches घटना पर की लंबाई के आधार preventDefault() कॉल करने के लिए है।

यह समाधान एक चुटकी (उस मामले के लिए किसी भी दो उंगली इशारा) को रोकता है, लेकिन फिर भी आप इस घटना के जवाब देने के तरीके के साथ लचीलापन प्रदान करते हैं।यह एक अच्छा समाधान है क्योंकि आपको टच इवेंट्स को पूरी तरह अक्षम करने की आवश्यकता नहीं है (जैसा कि आप क्रोम फ्लैग का उपयोग करके चुटकी को अक्षम करना चाहते हैं, क्योंकि chrome://flags/#enable-pinch अब मौजूद नहीं है)।

window.addEventListener('touchstart', function(e) { 
 
    if (e.targetTouches.length === 2) { 
 
    e.preventDefault(); 
 
    } 
 
}, false);
Some text that you can't pinch zoom on Chrome (tested in 54)

+0

मैं अभी भी जेएस को चुटकी से मार सकता हूं इससे पहले कि यह मुझे रोकता है .. तो फिर पेज ज़ूम किया गया है लेकिन अब ज़ूम आउट करना असंभव है। –

+0

क्या आप कह रहे हैं कि कभी-कभी ब्राउजर रोकथाम से पहले ईवेंट को संभालता है? लेकिन यह व्यवहार असंगत है? मुझे इसका अनुभव नहीं हो रहा है लेकिन मैं इसका परीक्षण करना चाहता हूं। विंडोज़ पर – wgardiner

+0

हाँ जावास्क्रिप्ट उन्हें रोकने से पहले क्रोम ब्राउजर एक्सेसिबिलिटी फीचर्स शुरू करेगा। तो कोई पिनिंग एक ज़ूम का कारण बन जाएगा। ऐसा करना मुश्किल है, लेकिन अगर मैं कोशिश करता हूं और मैं इसे दोहराना चाहता हूं। तो जब कोई आगंतुक स्क्रीन के साथ खेलता है तो वे गलती से इसे ज़ूम कर सकते हैं, फिर यह उस तरह से अटक जाता है .. –

-1
+0

स्टैक ओवरफ़्लो में आपका स्वागत है! जबकि इस कोड स्निपेट का स्वागत है, और कुछ मदद प्रदान कर सकता है, यह [अगर यह एक स्पष्टीकरण शामिल है तो बहुत सुधार हुआ है] (// meta.stackexchange.com/q/114762) * कैसे * यह प्रश्न को संबोधित करता है। इसके बिना, आपके उत्तर में बहुत कम शैक्षणिक मूल्य है - याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, न सिर्फ उस व्यक्ति से पूछ रहे हैं! स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें, और संकेत दें कि कौन सी सीमाएं और धारणाएं लागू होती हैं। विशेष रूप से, यह अभी भी सिंगल-टच इवेंट्स को काम करने की अनुमति कैसे देता है? –

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