galambalazs समाधान महान है! यह मेरे लिए क्रोम और फ़ायरफ़ॉक्स दोनों में पूरी तरह से काम करता था। और इसे ब्राउज़र विंडो से किसी भी डिफ़ॉल्ट घटना को रोकने के लिए बढ़ाया जा सकता है। मान लीजिए कि आप कैनवास पर एक ऐप कर रहे हैं। आप ऐसा कर सकते हैं:
var events = {
preventDefault: function(e) {
e = e || window.event;
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
},
//spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36,
//left: 37, up: 38, right: 39, down: 40
keys: [32, 33, 34, 35, 36, 37, 38, 39, 40],
keydown: function(e) {
for (var i = events.keys.length; i--;) {
if (e.keyCode === events.keys[i]) {
events.preventDefault(e);
return;
}
}
},
wheel: function(e) {
events.preventDefault(e);
},
disable: function() {
if (window.addEventListener) {
window.addEventListener('DOMMouseScroll', events.wheel, false);
}
window.onmousewheel = document.onmousewheel = events.wheel;
document.onkeydown = helpers.events.keydown;
},
enable: function() {
if (window.removeEventListener) {
window.removeEventListener('DOMMouseScroll', events.wheel, false);
}
window.onmousewheel = document.onmousewheel = document.onkeydown = null;
}
}
और फिर अपने ऐप पर मान लें कि आप अपने स्वयं के ईवेंट को संसाधित करने जा रहे हैं, जैसे कि माउस, कीबोर्ड, टच इवेंट और इसी तरह ... आप डिफ़ॉल्ट ईवेंट को अक्षम कर सकते हैं जब माउस कैनवास के अंदर जाता है और माउस के होने पर उन्हें पुन: सक्षम करता है। बाहर चला जाता है:
function setMouseEvents(canvas) {
var useCapture = false;
//Mouse enter event
canvas.addEventListener('mouseenter', function(event) {
events.disable();
}, useCapture);
//Mouse leave event
canvas.addEventListener('mouseleave', function(event) {
events.enable();
}, useCapture);
}
आप इस हैक के साथ राइट क्लिक मेनू को भी निष्क्रिय कर सकते हैं:
function disableRightClickMenu(canvas) {
var my_gradient = canvas.context.createLinearGradient(0, 0, 0, 225);
my_gradient.addColorStop(0, "white");
my_gradient.addColorStop(1, "white");
canvas.context.fillStyle = my_gradient;
canvas.context.fillRect(0, 0, canvas.width, canvas.height);
canvas.oncontextmenu = function() { return false; };
}