【问题标题】:pointer-events: none VML raphael solution指针事件:无 VML raphael 解决方案
【发布时间】:2012-06-08 15:35:57
【问题描述】:

我已经使用 jQuery 在 Raphael 元素上实现了pointer-events: none,如下所示:

var raphaelElement = Raphael.ellipse(x,y,w,h);
$(raphaelElement.node).css({'pointer-events': 'none'});

这工作正常,但当然在 IE8 中,Raphael 使用 VML 而不是 SVG,这个解决方案失败了。

有没有人有其他解决方案可以让 Raphael 元素忽略事件。

【问题讨论】:

    标签: javascript svg raphael


    【解决方案1】:

    在 IE8(及更早版本)上实现此功能的唯一方法是实际捕获事件,并在事件处理程序中:

    1. 隐藏元素 (.style.display='none')
    2. 使用elementFromPoint()方法查找'catcher'下面的下一个元素
    3. re-create and fire the event on that element(另见this
    4. 再次展示捕手 (.style.display='')

    这种通用方法(减去第 3 步)已在 IE 上使用了 10 多年,允许用户直接在光标下拖动元素,同时仍检测下方可能放置的目标元素的“鼠标悬停”。

    【讨论】:

    • 不错。非常。我第一次分享了一个不是我自己的链接:)
    • 我遇到了与 Raphael 相同的问题并尝试您的解决方案。但在 IE8 elementFromPoint 返回 null 而不是底层元素。 IE8 的 elementFromPoint 坏了吗?有解决办法吗?
    • @Fabian 将此作为自己的问题以及足够可重复的测试用例提出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多