检测右键单击+左键单击不起作用
Detect right click + left click not working
>我在这里问(如何检测右键单击+左键单击)如何检测用户右键单击时按住它并单击鼠标左键
我确实喜欢第一个答案,但它没有按预期工作,
首先在我的代码中,我创建表和 td,然后像这样向每个 td 添加事件:
td.setAttribute('onmousedown', "handleMouseDown(event)");
td.setAttribute('onmouseup', "handleMouseUp(event)");
td.setAttribute('onclick', "checkCell(this)");
我不使用 addEventListener',因为 IE <9。
处理事件的两个函数是:
function handleMouseDown (e) {
if (e.button == 2) rightClicked = true;
}
function handleMouseUp (e) {
if (e.button == 2) rightClicked = false;
}
首先,它的工作很好,handleMouseUp
剂量并不总是rightClicked
设置为假
当我被单击左按钮时,当我释放右按钮时,它的 dosent rightClicked
设置为 false所以我添加到checkCell
如果rightClicked
true
所以把它设置为 false。
if (rightClicked) {
rightClicked = false;
现在在我第一次单击右键单击并离开它的工作时,但在那之后它不再工作,除非继续按左键单击,之后有时它可以工作
有时它甚至在第一次就起作用了
我在 jsfiddle 中的所有代码:https://jsfiddle.net/e4pf78zu/它的 dosent 在那里工作正常,控制台中显示的函数未定义我不知道为什么有人可以为我解决这个问题谢谢
由于几个原因,这不起作用。
首先,你以一种非常奇怪的方式为每个单元格设置事件侦听器,更不用说你做错了。
td.setAttribute('onmousedown', "handleMouseDown(event)");
你为什么不干脆做
td.onmousedown = handleMouseDown;
另外,你正在做handleMouseDown(event)
,我很确定这是错误的。
通常,请不要像这样添加事件处理程序。
我不使用 addEventListener',因为 IE <9。
IE9及更低版本不支持addEventListener
但它们确实支持attachEvent
这可能比做.on<EventName> = function(){}
更好,或者你目前在那里做的事情。
此外,您甚至可以在这些浏览器中模拟addEventListener
。只需在此处使用此 polyfill,然后通常阅读有关addEventListener
句柄鼠标向上剂量并不总是设置右键当我被单击左按钮时单击为 false
只有当您释放正确的按钮时,rightClicked
才会变得false
,以便按预期工作。
它的 dosent 设置右键当我释放右按钮时单击为 false
好吧,根据您提供的代码,这是不可能的。代码非常清楚地说
if (e.button == 2) rightClicked = false;
所以我添加到检查单元格,如果右键单击为真,因此将其设置为 false。
这可能不需要。首先解决您的其他问题,然后查看您是否真的需要这样做。
- 使用jquery插入动态HTML后,单击不起作用
- 剑道模板在元素中单击不起作用
- ng在ui gmap窗口内单击不起作用
- 在Chrome扩展选项页面中单击不起作用的事件
- PrependTo,然后在单击不起作用时将其删除
- JavaScript 单击不起作用
- 从对象的按钮单击不起作用
- 全日历日单击不起作用(不执行任何操作)
- 检测右键单击+左键单击不起作用
- 离子无线电取消选中 ng-单击不起作用
- C# 调用成员单击“不起作用”
- JQuery 在 标签内单击不起作用
- 事件侦听器单击不起作用
- 翡翠按钮单击不起作用
- 角度路线在单击时不起作用,但再次单击不起作用
- 在 ajax 调用中加载日期选择器,然后单击不起作用
- AngularJS:ng-单击不起作用,适用于<按钮>
- JQuery .hover slidedown slideUp 工作,但 ,单击不起作用
- 多种功能在Chrome中单击不起作用
- 量角器 ID 单击不起作用