इस तरह एक सवाल में कठिनाइयों का एक बहुत हैं। असल में, वहाँ दो चरण हैं:
keydown
और keyup
घटनाओं के लिए सुनो, और जब Ctrl नीचे है का ट्रैक
- माउस व्हील के लिए सुनो रखने के लिए, और (यदि Ctrl नीचे है) करते हैं क्या आप
चाहते लेकिन यहाँ समस्या का समाधान करने के लिए है इस प्रकार हैं:
- आप ईवेंट श्रोताओं/हैंडलर को कैसे लागू कर रहे हैं?
- According to QuirksMode, मैक पर ब्राउज़र Ctrl के लिए एक सटीक कीकोड नहीं लौटाते हैं।
- Also according to QuirksMode, फायरफॉक्स
mousewheel
घटना का समर्थन नहीं करता। आपको इसके बजाय DOMMouseScroll
का उपयोग करना होगा।
- According to the MDC, ऐसे कुछ उदाहरण हैं जहां
DOMMouseScroll
ईवेंट, Ctrl के साथ उपयोग किए जाने पर, कभी भी निकाल दिया नहीं जाता है!
मैं यह नहीं कह रहा हूं कि वे दुर्बल हैं, या यहां तक कि वे बड़ी समस्याएं हैं। एक अच्छी जावास्क्रिप्ट लाइब्रेरी का उपयोग करना उनमें से अधिकतर को दूर करना चाहिए, अगर सब कुछ नहीं। समर्थन करने के लिए ब्राउज़रों/ओएस की अपनी पसंद में चुनिंदा होने से यह काफी मददगार होगा, अगर यह करने योग्य है।
अगर मैं jQuery (और a jQuery mousewheel plugin) के साथ ऐसा कर रहे थे, यह कुछ इस तरह दिखेगा:
(function ($) {
var isCtrl = false;
function ctrlCheck(e) {
if (e.which === 17) {
isCtrl = e.type === 'keydown' ? true : false;
}
}
function wheelCheck(e, delta) {
// `delta` will be the distance that the page would have scrolled;
// might be useful for increasing the SVG size, might not
if (isCtrl) {
e.preventDefault();
yourResizeMethod(delta);
}
}
$(document).
keydown(ctrlCheck).
keyup(ctrlCheck).
mousewheel(wheelCheck);
}(jQuery));