我想使左键行为的右键使用JS或jQuery
I want to make left click behave as right click using either JS or jQuery
我一直在尝试在用户点击左键时触发右键。
我已经尝试过trigger, triggerHandler, mousedown,但是我不能让它工作。
我能够捕获点击事件本身,但不能触发上下文菜单。
任何想法?
触发鼠标右键
function triggerRightClick(){
var evt = new MouseEvent("mousedown", {
view: window,
bubbles: true,
cancelable: true,
clientX: 20,
button: 2
});
some_div.dispatchEvent(evt);
}
触发上下文菜单
function triggerContextMenu(){
var evt = new MouseEvent("contextmenu", {
view: window
});
some_div.dispatchEvent(evt);
}
这里是bin: http://jsbin.com/rimejisaxi
更好的参考/解释:https://stackoverflow.com/a/7914742/1957036
使用以下代码反转鼠标点击。
$.extend($.ui.draggable.prototype, {
_mouseInit: function () {
var that = this;
if (!this.options.mouseButton) {
this.options.mouseButton = 1;
}
$.ui.mouse.prototype._mouseInit.apply(this, arguments);
if (this.options.mouseButton === 3) {
this.element.bind("contextmenu." + this.widgetName, function (event) {
if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
$.removeData(event.target, that.widgetName + ".preventClickEvent");
event.stopImmediatePropagation();
return false;
}
event.preventDefault();
return false;
});
}
this.started = false;
},
_mouseDown: function (event) {
// we may have missed mouseup (out of window)
(this._mouseStarted && this._mouseUp(event));
this._mouseDownEvent = event;
var that = this,
btnIsLeft = (event.which === this.options.mouseButton),
// event.target.nodeName works around a bug in IE 8 with
// disabled inputs (#7620)
elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
return true;
}
this.mouseDelayMet = !this.options.delay;
if (!this.mouseDelayMet) {
this._mouseDelayTimer = setTimeout(function () {
that.mouseDelayMet = true;
}, this.options.delay);
}
if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
this._mouseStarted = (this._mouseStart(event) !== false);
if (!this._mouseStarted) {
event.preventDefault();
return true;
}
}
// Click event may never have fired (Gecko & Opera)
if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
$.removeData(event.target, this.widgetName + ".preventClickEvent");
}
// these delegates are required to keep context
this._mouseMoveDelegate = function (event) {
return that._mouseMove(event);
};
this._mouseUpDelegate = function (event) {
return that._mouseUp(event);
};
$(document)
.bind("mousemove." + this.widgetName, this._mouseMoveDelegate)
.bind("mouseup." + this.widgetName, this._mouseUpDelegate);
event.preventDefault();
mouseHandled = true;
return true;
}
});
现在在函数调用事件中使用mouseButton: 3表示右键单击,1表示左键单击
相关文章:
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 如何知道你右键点击谷歌chrome扩展是什么
- 我们可以在HTML中禁用右键单击锚标记吗
- 在动态crm 2011中,右键单击已完成活动的只读文本时,您是否出现错误
- jqGrid - 在右键单击时禁止选择行
- 右键单击夜巡
- 如何在 Hammer 中启用鼠标右键单击(和中键单击).js
- 听右键点击 svg 元素与 Raphael.js
- 在 React.JS 中禁用右键单击
- JS:检测没有jQuery的右键点击(内联)
- 在没有js和css的情况下禁用右键单击
- 如何隐藏一些属性在右键单击使用JS
- 我想使左键行为的右键使用JS或jQuery
- 右键单击d3.js元素:如何防止浏览器上下文菜单出现
- 使用three.js访问右键
- 右键单击pan fabric js
- 如何禁用右键单击在js/jquery中相同类的所有链接
- 如何打开D3.js上下文菜单上的左键而不是右键单击
- 如何在angular js中处理nvd3饼图上的右键单击事件