javascript - Google मानचित्र ज़ूम करने के लिए Ctrl+स्क्रॉल अक्षम करें




google-maps (4)

क्या कोई जानता है कि CTRL + Scroll को कैसे अक्षम करें?

सबसे पहले जब माउस व्हील ले जाया गया था तो मानचित्र ज़ूम इन / आउट होगा। लेकिन अब यह ज़ूम इन / आउट करने के लिए CTRL + माउस व्हील स्क्रॉल दबाएगा।

हम इस सुविधा को कैसे अक्षम कर सकते हैं? मुझे प्रलेखन में कुछ भी नहीं मिल रहा है:

https://developers.google.com/maps/documentation/javascript/controls#ControlOptions


Answers

मैं gestureHandling: 'greedy' नहीं कर पा रहा gestureHandling: 'greedy' मेरे लिए काम करने के लिए ठीक है क्योंकि मेरे पास मानचित्र पर ओवरले था। मैं mousewheel घटना का पता लगाने और ctrl संपत्ति को सही करने के लिए सेट अप समाप्त हो गया।

// Load maps and attach event listener to scroll event.
var $map = $('.map');
$map[0].addEventListener('wheel', wheelEvent, true);         

function wheelEvent(event) {
    // Set the ctrlKey property to true to avoid having to press ctrl to zoom in/out.
    Object.defineProperty(event, 'ctrlKey', { value: true });
}


यदि आप पूरी तरह से स्क्रॉल-टू-ज़ूम अक्षम करने के साथ ठीक हैं, तो आप scrollwheel: false उपयोग कर सकते हैं scrollwheel: false । यदि आप ज़ूम नियंत्रण (ज़ूम नियंत्रण zoomControl: true ) प्रदान करते हैं तो उपयोगकर्ता ज़ूम बटन पर क्लिक करके मानचित्र को ज़ूम करने में सक्षम होगा।

प्रलेखन: https://developers.google.com/maps/documentation/javascript/reference ("स्क्रोलव्हील" के लिए पृष्ठ खोजें)

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  scrollwheel: false,
  zoomControl: true
});

यह JSON अपहरण के माध्यम से प्रतिक्रिया के प्रकटीकरण को रोकता है।

सिद्धांत रूप में, HTTP प्रतिसादों की सामग्री समान उत्पत्ति नीति द्वारा सुरक्षित है: एक डोमेन के पृष्ठों को दूसरे डोमेन पर पृष्ठों से जानकारी का कोई भी टुकड़ा नहीं मिल सकता है (जब तक कि स्पष्ट रूप से अनुमति नहीं दी जाती है)।

एक हमलावर आपकी ओर से अन्य डोमेन पर पृष्ठों का अनुरोध कर सकता है, उदाहरण के लिए <script src=...> या <img> टैग का उपयोग करके, लेकिन यह परिणाम (हेडर, सामग्री) के बारे में कोई जानकारी नहीं प्राप्त कर सकता है।

इस प्रकार, यदि आप किसी हमलावर के पृष्ठ पर जाते हैं, तो यह gmail.com से आपके ईमेल को नहीं पढ़ सकता है।

सिवाय इसके कि JSON सामग्री के अनुरोध के लिए स्क्रिप्ट टैग का उपयोग करते समय, JSON को हमलावर के नियंत्रित वातावरण में जावास्क्रिप्ट के रूप में निष्पादित किया जाता है। यदि हमलावर ऐरे या ऑब्जेक्ट कंस्ट्रक्टर या ऑब्जेक्ट निर्माण के दौरान उपयोग की जाने वाली कुछ अन्य विधि को बदल सकता है, तो JSON में कुछ भी हमलावर के कोड से होकर गुजरेगा, और खुलासा किया जाएगा।

ध्यान दें कि यह उस समय होता है जब JSON को जावास्क्रिप्ट के रूप में निष्पादित किया जाता है, उस समय नहीं जब इसे पार्स किया जाता है।

कई प्रतिवाद हैं:

यह सुनिश्चित करना कि JSON कभी भी निष्पादित नहीं करता है

while(1); लगाकर while(1); JSON डेटा से पहले कथन, Google यह सुनिश्चित करता है कि JSON डेटा को जावास्क्रिप्ट के रूप में कभी भी निष्पादित नहीं किया जाता है।

केवल एक वैध पृष्ठ वास्तव में पूरी सामग्री प्राप्त कर सकता है, while(1); पट्टी while(1); , और शेष JSON के रूप में पार्स करें।

for(;;); जैसी चीजें for(;;); उदाहरण के लिए, फेसबुक पर उन्हीं परिणामों के साथ देखा गया है।

यह सुनिश्चित करना कि JSON जावास्क्रिप्ट मान्य नहीं है

इसी तरह, JSON से पहले अमान्य टोकन जोड़ना, जैसे &&&START&&& , सुनिश्चित करता है कि इसे कभी भी निष्पादित नहीं किया गया है।

हमेशा JSON को बाहर की ओर एक ऑब्जेक्ट के साथ लौटाएं

यह OWASP JSON अपहरण से बचाने के लिए अनुशंसित तरीका है और कम घुसपैठ वाला है।

पिछले काउंटर-उपायों के समान, यह सुनिश्चित करता है कि JSON को जावास्क्रिप्ट के रूप में कभी भी निष्पादित नहीं किया जाता है।

एक मान्य JSON ऑब्जेक्ट, जब किसी चीज़ से संलग्न नहीं होता है, तो जावास्क्रिप्ट में मान्य नहीं है:

eval('{"foo":"bar"}')
// SyntaxError: Unexpected token :

हालांकि यह वैध JSON है:

JSON.parse('{"foo":"bar"}')
// Object {foo: "bar"}

इसलिए, यह सुनिश्चित करते हुए कि आप हमेशा प्रतिक्रिया के शीर्ष स्तर पर एक वस्तु लौटाते हैं, यह सुनिश्चित करता है कि JSON मान्य जावास्क्रिप्ट नहीं है, जबकि अभी भी वैध JSON है।

जैसा कि टिप्पणियों में @hvd द्वारा उल्लेख किया गया है, खाली वस्तु {} वैध जावास्क्रिप्ट है, और वस्तु को खाली जानना स्वयं बहुमूल्य जानकारी हो सकती है।

उपरोक्त तरीकों की तुलना

OWASP तरीका कम घुसपैठ वाला है, क्योंकि इसमें कोई क्लाइंट लाइब्रेरी परिवर्तन की आवश्यकता नहीं है, और वैध JSON को स्थानांतरित करता है। हालांकि यह अनिश्चित है कि अतीत या भविष्य के ब्राउज़र बग्स इसे हरा सकते हैं, हालांकि। जैसा कि @oriadam द्वारा नोट किया गया है, यह स्पष्ट नहीं है कि डेटा को पार्स एरर में एक एरर हैंडलिंग के माध्यम से लीक किया जा सकता है या नहीं (उदाहरण के लिए window.onerror)।

Google का तरीका इसके लिए क्लाइंट लाइब्रेरी की आवश्यकता है ताकि स्वचालित डी-सीरीज़ेशन का समर्थन किया जा सके और इसे ब्राउज़र बग के संबंध में सुरक्षित माना जा सके।

डेवलपर्स को गलती से JSON भेजने से बचने के लिए दोनों तरीकों को सर्वर साइड परिवर्तनों की आवश्यकता होती है।







javascript google-maps