Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将站点上的所有右键单击转换为左键单击_Javascript_Jquery_Html - Fatal编程技术网

Javascript 将站点上的所有右键单击转换为左键单击

Javascript 将站点上的所有右键单击转换为左键单击,javascript,jquery,html,Javascript,Jquery,Html,我正在寻找一个快速的JavaScript修复程序: 假设您使用鼠标或触摸板(PC/笔记本电脑)在设备上浏览单个网页,我希望发生以下情况 右键单击鼠标时: 取消激活右键单击。所以没有下拉菜单 将右键单击转为左键单击,例如,我在图像或锚上单击了鼠标右键,站点应该像在该元素上单击鼠标左键一样处理它 该功能应适用于整个网站的所有元素。 有没有简单的方法来解决这个问题 我已经试过了: <script type="text/javascript"> function click (e) {

我正在寻找一个快速的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>

功能点击(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谢谢,非常感谢!