【问题标题】:allowing Raphael/SVG element events to fire through HTML layered on top允许 Raphael/SVG 元素事件通过分层的 HTML 触发
【发布时间】:2012-05-03 19:50:33
【问题描述】:

我在 Raphael 生成的 SVG 元素的顶部有一个 html 元素(允许动态文本换行和调整大小)。

问题是我将事件(mousedown、mouseup 等)分配给了 html 下的 SVG 元素。 SVG 元素本身实际上可以通过 raphael.freeTransform 插件进行拖动和缩放。

当然,顶部的 html 元素不再接收事件。

我正在寻找解决此问题的方法,但真的不知道从哪里开始。该解决方案必须跨浏览器兼容,因此某些现代浏览器中允许元素忽略点击的新功能集不是可接受的解决方案。

注意:我已经尝试了通过在 SVG 本身中呈现文本来实现相同功能的所有方式,但实际上无法以动态方式准确模拟我想要做的事情(即文本在用户键入时调整大小和换行)

我目前能想到的唯一解决方案是以某种方式使用foreignObjects,但是除非有人知道插件,否则Raphael 不支持它们?

【问题讨论】:

  • 对我来说,很难完全理解您的问题的背景。我建议将 jsfiddle 与您的问题的示例/再生产放在一起。

标签: javascript jquery svg raphael


【解决方案1】:

您正在寻找具有 css pointer-events 效果的东西。这是一个 mozilla hack,后来被添加到 webkit 中,并且不受 IE 支持。它允许您防止图层拦截鼠标事件。有一些方法可以让它跨平台工作(我相信 Modenizr 支持它,但不要引用我的话)。或者考虑一下:

css 'pointer-events' property alternative for IE

【讨论】:

  • 太棒了!我知道指针事件,但没有意识到实际上有一个跨浏览器版本可用!欢呼
猜你喜欢
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多