我正在寻找一个快速的JavaScript修复程序:
假设您正在使用鼠标或触控板(PC /笔记本电脑)浏览设备上的单个网页,我希望跟进。
右键单击鼠标时:
此功能应适用于整个网站,所有元素。 有没有一种简单的方法来解决这个问题?
我已经尝试过了:
<script type="text/javascript">
function click (e) {
if (!e)
e = window.event;
if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {
if (window.opera)
window.alert("Sorry, this function is deactivated.");
return false;
}
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = click;
document.oncontextmenu = click;
clickedOption.parentNode.selectedIndex = clickedOption.index;
</script>
这会禁用鼠标右键单击的功能,但我不能让它像左键单击一样。 有解决方案吗什么可能是错的?
答案 0 :(得分:2)
如果按下右键,您可以在文件mousedown上发送点击事件:
$(document).on('mousedown contextmenu', function (e) {
if (e.button === 2) {
e.preventDefault();
var mclick = document.createEvent("MouseEvents");
mclick.initMouseEvent("click", false, true, window, 0, e.screenX, e.screenY, e.clientX, e.clientY, true, false, false, true, 0, null);
e.target.dispatchEvent(mclick);
}
});
不确定它是否符合您的所有需求,但我想给您一些想法。
答案 1 :(得分:2)
这将强制左键单击文档上的右键单击或单击的任何元素
document.addEventListener('contextmenu', function(e){
// Stop the context menu
e.preventDefault();
e.stopPropagation();
// Try to avoid document wide things, just elements
if(e.target.nodeName != 'HTML'){
e.target.click();
}
});
// Testing
document.addEventListener('click',function(e){
e.target.innerHTML = 'Caught';
});
<div>Right Click Me</div>
<span>Right Click Me</span>
回答对我的回答的评论 - &gt;
document.addEventListener('contextmenu', function(e){
// Stop the context menu
e.preventDefault();
e.stopPropagation();
});
// Testing
document.addEventListener('click',function(e){
e.target.innerHTML = 'Caught';
});
<div>I dont work on right clicks</div>
答案 2 :(得分:0)
尝试以下方法:
$("body").on("contextmenu", function(e){
e.preventDefault();
e.target.click();
});