gpt4 book ai didi

JavaScript:将长按事件转换为右键单击事件

转载 作者:搜寻专家 更新时间:2023-11-01 05:24:25 30 4
gpt4 key购买 nike

如何将长按事件自动转换为右键单击事件?由于 iPad 等许多触摸设备不提供在网站上进行右键单击的方法,这将非常方便,因为不需要调整网站代码。

例如,这段代码是为支持鼠标的桌面浏览器设计的:

<html>
<head><title>Long tap to right click test</title></head>
<body>
<img src="dummy.png" oncontextmenu="alert('Hi!'); return false;" width="20" height="20" />
</body>
</html>

目标是在不修改代码的情况下将长按事件转换为右键单击事件。 (当然只是加载一些 JavaScript。)

如果看过https://github.com/furf/jquery-ui-touch-punch/对 jQuery 小部件的拖放支持做了类似的事情。但是这个插件不支持长按。

还有 http://code.google.com/p/jquery-ui-for-ipad-and-iphone/确实执行了所需的翻译,但它会阻止滚动,因此对于需要滚动支持的常规网站来说毫无用处。

感谢任何帮助 - 谢谢!

最佳答案

您可以编写简单的插件来处理此类事件。让我们称之为 longTap 事件。示例:

$.fn.longTap = function(options) {

options = $.extend({
delay: 1000,
onRelease: null
}, options);

var eventType = {
mousedown: 'ontouchstart' in window ? 'touchstart' : 'mousedown',
mouseup: 'ontouchend' in window ? 'touchend' : 'mouseup'
};

return this.each(function() {
$(this).on(eventType.mousedown + '.longtap', function() {
$(this).data('touchstart', +new Date);
})
.on(eventType.mouseup + '.longtap', function(e) {
var now = +new Date,
than = $(this).data('touchstart');
now - than >= options.delay && options.onRelease && options.onRelease.call(this, e);
});
});
};

显然,对于 iPad,您希望将 mousedownmouseup 更改为 touchstarttouchend

用法:http://jsfiddle.net/dfsq/RZgxT/1/

关于JavaScript:将长按事件转换为右键单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14876301/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com