Javascript 将站点上的所有右键单击转换为左键单击
我正在寻找一个快速的JavaScript修复程序: 假设您使用鼠标或触摸板(PC/笔记本电脑)在设备上浏览单个网页,我希望发生以下情况 右键单击鼠标时:Javascript 将站点上的所有右键单击转换为左键单击,javascript,jquery,html,Javascript,Jquery,Html,我正在寻找一个快速的JavaScript修复程序: 假设您使用鼠标或触摸板(PC/笔记本电脑)在设备上浏览单个网页,我希望发生以下情况 右键单击鼠标时: 取消激活右键单击。所以没有下拉菜单 将右键单击转为左键单击,例如,我在图像或锚上单击了鼠标右键,站点应该像在该元素上单击鼠标左键一样处理它 该功能应适用于整个网站的所有元素。 有没有简单的方法来解决这个问题 我已经试过了: <script type="text/javascript"> function click (e) {
- 取消激活右键单击。所以没有下拉菜单
- 将右键单击转为左键单击,例如,我在图像或锚上单击了鼠标右键,站点应该像在该元素上单击鼠标左键一样处理它
<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>
功能点击(e){
如果(!e)
e=窗口事件;
if((e.type&&e.type==“contextmenu”)| |(e.button&&e.button==2)| |(e.which&&e.which==3)){
if(window.opera)
window.alert(“对不起,此功能已停用。”);
返回false;
}
}
if(document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=单击;
document.oncontextmenu=单击;
clickedOption.parentNode.selectedIndex=clickedOption.index;
这将禁用鼠标右键单击的功能,但我无法使其表现为鼠标左键单击。
有什么解决办法吗?可能有什么问题?如果按下右键,您可以在文档鼠标向下时发送click事件:
$(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);
}
});
不确定它是否能满足您的所有需求,但我想这会给您一些想法。如果按下右键,您可以在文档鼠标向下时发送click事件:
$(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);
}
});
不确定它是否能满足您的所有需求,但我想它会给您一些想法。这将强制您在文档或您单击的任何元素上单击鼠标左键或右键
document.addEventListener('contextmenu',函数(e){
//停止上下文菜单
e、 预防默认值();
e、 停止传播();
//尽量避免文档范围内的事情,只是元素
如果(e.target.nodeName!=“HTML”){
e、 target.click();
}
});
//测试
document.addEventListener('click',函数(e){
e、 target.innerHTML='catch';
});代码>
右键单击我
右键单击我
这将强制左键单击文档或您单击的任何元素
document.addEventListener('contextmenu',函数(e){
//停止上下文菜单
e、 预防默认值();
e、 停止传播();
//尽量避免文档范围内的事情,只是元素
如果(e.target.nodeName!=“HTML”){
e、 target.click();
}
});
//测试
document.addEventListener('click',函数(e){
e、 target.innerHTML='catch';
});代码>
右键单击我
右键单击我
尝试以下操作:
$("body").on("contextmenu", function(e){
e.preventDefault();
e.target.click();
});
请尝试以下操作:
$("body").on("contextmenu", function(e){
e.preventDefault();
e.target.click();
});
没有e.preventDefault()
在中单击
函数...@A.Wolff您的意思是返回false
@Xufox返回false
是event.preventDefault()
和event.stopPropagation()的缩写
在jqueryy中,您可以通过事件处理程序模拟从jquery单击鼠标左键所产生的动作,但请注意,您不能在所有情况下将鼠标左键单击模拟为元素上的本机事件
在中单击
函数...@A.Wolff您的意思是返回false
@Xufox返回false
是event.preventDefault()
和event.stopPropagation()的缩写
在jquery中,您可以通过事件处理程序模拟jquery左键单击的动作,但请注意,您不能在所有情况下将左键单击模拟为元素上的本机事件。请注意,左键和右键单击都会触发单击事件。因此,在这种特殊情况下,您将运行onclick代码两次。不,它没有。我在我的代码中添加了一个代码片段,向您展示了它并不需要为此感谢,它工作得非常完美!最后一个问题:当我用鼠标右键单击超链接时,浏览器会提醒用户“弹出窗口被阻止”。链接是目标:“_blank”,当我用鼠标左键单击?@Max时不会发生这种情况。这是因为我们使用JavaScript强制打开它。几小时后下班后我会去看一看,看是否有紧急情况workaround@Jesse谢谢,非常感谢!请注意,click
事件无论如何都会为左键和右键单击触发。因此,在这种特殊情况下,您将运行onclick代码两次。不,它没有。我在我的代码中添加了一个代码片段,向您展示了它并不需要为此感谢,它工作得非常完美!最后一个问题:当我用鼠标右键单击超链接时,浏览器会提醒用户“弹出窗口被阻止”。链接是目标:“_blank”,当我用鼠标左键单击?@Max时不会发生这种情况。这是因为我们使用JavaScript强制打开它。几小时后下班后我会去看一看,看是否有紧急情况workaround@Jesse谢谢,非常感谢!