【问题标题】:onmouseover event in Firefox inside SVGSVG 内 Firefox 中的 onmouseover 事件
【发布时间】:2011-12-08 13:10:42
【问题描述】:

我已经在这里搜索了答案,但没有成功。

所以,我在 html 页面中有 SVG,我想以这种方式捕捉 onmouseover 事件:

<g id="node1" class="node" onmouseover="showTooltip(event,'blabla',0,200)">

在 Chrome 中工作的文件。

要在 Firefox 中使用它,我正在尝试使用 Yahoo dom 事件 库。使用它我可以在 Firefox 中捕获此事件,但不能在 SVG 中捕获:

事件未定义

如何在 SVG 中使用 onmouseover 事件?

【问题讨论】:

    标签: javascript firefox svg dom-events


    【解决方案1】:

    尝试使用 evt 而不是事件。此示例适用于 Firefox:http://www.w3.org/TR/SVG/images/script/script01.svg

    【讨论】:

    • 太棒了!我唯一想知道的是为什么要使用 EVT?
    • 在 Webkit (Chrome/Safari) 和 Presto (Opera) 中,您可以使用“evt”或“event”(evt 基本上是“var evt=event;”)。如果 Firefox 也做出这样的改变可能会更好。
    • @k102 它是evt,因为 SVG 规范是这么说的。现在为什么那里的规范编写者决定与 HTML 不兼容,谁知道呢。
    • @ErikDahlström 至少在 Chrome 中(Safari 不同;这是 V8 的一部分,而不是 WebKit),在事件处理程序中,函数参数通常命名为 evt。使用裸字event 只需查找作用域链,如果幸运的话,您会找到 Chrome 也定义的window.event。但是,如果元素上有一个名为 event 的 expando,那么你就输了。见code.google.com/p/chromium/issues/detail?id=80912。 Firefox 不太可能这样做,因为它在规范和实践中都非常糟糕。
    • @BorisZbarsky 呃,比我当时想象的还要糟糕。不幸的是,有相当多的 svg 内容使用 'evt',如果所有浏览器都不允许同时使用 'event' 和 'evt',那么它肯定无助于弃用 'evt'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2011-04-06
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多