গালাম্বলজের সমাধানটি দুর্দান্ত! এটি ক্রোম এবং ফায়ারফক্স উভয় ক্ষেত্রে আমার পক্ষে নিখুঁতভাবে কাজ করেছে। এবং এটি ব্রাউজার উইন্ডো থেকে কোনও ডিফল্ট ইভেন্ট প্রতিরোধের জন্যও বাড়ানো যেতে পারে। ধরা যাক আপনি ক্যানভাসে একটি অ্যাপ্লিকেশন করছেন। আপনি এটি করতে পারেন:
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; };
}