javascript - 在 JavaScript 中对 SVG 形状的鼠标右键单击检测不起作用

标签 javascript svg contextmenu raphael


我的脚本需要一些帮助,我想在其中检测人民币点击。
信息:最后我想在一个专用的 SVG 形状上显示我自己的右键单击菜单,它是使用 Raphael js lib 显示的,我发现网上有很多不同的例子,甚至是非常简单的实现,比如使用 jQuery - 但我必须能够检测到人民币是否被点击或任何其他。
我已经尝试(在 RMB 上没有成功)以下代码和平:

<html>
<head>
    <script type="text/javascript" src="raphael.js"></script>
    <script>
        window.onload = function() {
            var paper = new Raphael(document.getElementById('canvas_container'), 300, 300);
            var shape = paper.path('m150,150l40,0l0,20l-40,0l0,-20z');
            var fill=shape.attr({fill:'#FFFFFF'});
            fill.click(function (evt){
                if(evt.button == 2) {
                    // right mouse button pressed
                    evt.preventDefault();
                }
                alert("Pressed mouse = " + evt.button.toString());
            });
        }
    </script>
</head>

<!--    <BODY oncontextmenu="return false"> -->
<body>
    <div id="canvas_container"></div>
</body>
</html>


在 IE 中仅检测到 LMB(0),在 Chrome 中左侧(0)和中间(1)并显示默认上下文菜单,当我在 body 标签内禁用它时(如注释掉)上下文菜单根本不显示,但是用RMB(2)还是收不到alert,

感谢您的所有提示/支持, 鲍里斯

最佳答案

看起来 SVG 元素不会触发“点击”事件,而是在右键单击时触发“上下文菜单”。我正在使用 d3.js 来绑定(bind)事件,所以这对我有用:

.on("contextmenu", function(data, index) {
     //handle right click

     //stop showing browser menu
     d3.event.preventDefault();
});

关于javascript - 在 JavaScript 中对 SVG 形状的鼠标右键单击检测不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605978/

相关文章:

python - 关闭 QMessagebox 窗口后 PyQt 应用程序崩溃

delphi - 如何从 THtmlViewer 对象复制和粘贴?

javascript - 为什么 this.setState 仅在 React js 应用程序中的两次提交事件后才起作用?

javascript - 用JS随机改变几个div的背景图片

javascript - 从 paper.js 光栅导出 svg

d3.js - d3.js 中的重叠圆圈不显示工具提示

c# - 在 WPF 中打开 ContextMenu 时保留 DataGrid IsSelectionActive?

javascript查找以字符串作为id的元素

JavaScript 精度

html - HTML 和 CSS 中的 SVG 问题