I have this website where i take notes from. Currently i have to manually type all my notes. They have disabled the right context menu. I have added a chrome extension that can run javascript on the page, but i am not able to override their function that overrides the context menu. Here is what they have on the page.
$(document)[0].oncontextmenu = function() { return false; }
$(document).mousedown(function(e){
if( e.button == 2 ){
alert('Sorry, right click is disabled! Please consider typing');
return false;
}else if(e.button == 27){
exitFullscreen();
}else{
return true;
}
});
$('body').bind('cut copy paste', function (e) {
e.preventDefault();
alert('Sorry, consider typing');
});
$("body").on("contextmenu",function(e){
alert('Sorry, consider typing');
return false;
});
How can i disable it using some simple javascript. I have tried to override the context menu and set it to null, but it does not seem to be working
Advertisement
Answer
You can use jQuery off() and a new function for document.oncontextmenu that returns true instead of false
I’ve wrapped these in a button click handler just to show the original code blocking the context menu and keyboard copy and being reset when you click on the button
$('#reset-btn').click(() => {
// code to use in your extension
$('body').off('contextmenu cut copy paste')
document.oncontextmenu = () => true;
$(document).off('mousedown');
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="height:2000px; background:yellow">
<button id="reset-btn">Reset Context Menu</button>
<p>Some text to copy</p>
</div>
<script>
/******* Original site code *****/
$(document)[0].oncontextmenu = function() {
return false;
}
$(document).mousedown(function(e) {
if (e.button == 2) {
alert('Sorry, right click is disabled! Please consider typing');
return false;
} else if (e.button == 27) {
exitFullscreen();
} else {
return true;
}
});
$('body').bind('cut copy paste', function(e) {
e.preventDefault();
alert('Sorry, consider typing');
});
$("body").on("contextmenu", function(e) {
alert('Sorry, consider typing');
return false;
});
</script>