【问题标题】:call javascript function from onmouse event within svg file从svg文件中的onmouse事件调用javascript函数
【发布时间】:2014-03-19 13:19:00
【问题描述】:

我有一个包含这个的 svg 文件...

<text transform="matrix(1 0 0 1 162.7803 192.52)" font-family="'Helvetica'" font-size="11">30</text>

如果我修改该字符串,使其看起来像这样,而不是能够调用 JavaScript 函数...

<text transform="matrix(1 0 0 1 162.7803 192.52)" onmouseover="MyJavascriptFunction('u32');return true" font-family="'Helvetica'" font-size="11">30</text>

那么是否可以调用与 svg 文件在同一页面上的 JavaScript? 我已经尝试过了,但它不起作用,我唯一要做的就是这样一个简单的警报..

<text transform="matrix(1 0 0 1 162.7803 192.52)" onmouseover="alert('Hello from JavaScript!')" font-family="'Helvetica'" font-size="11">30</text>

svg文件是这样显示的……

<embed src="myfile.svg"/>

这根本不可能,还是我做错了?

【问题讨论】:

  • 不要嵌入,只需将 svg 正文包含到 html 中。否则你的浏览器不会初始化事件处理程序。

标签: javascript svg call


【解决方案1】:

我在这里做了一个简单的测试用例:http://test.progysm.com/svg/myfile.htm svg 文件调用在 myfile.htm 中定义的 MyJavascriptFunction 来自 myfile.svg 中的 onmouseover 事件。

您需要使用的只是对 html 窗口的引用。我用了“top”,也许你也可以用“parent”:

<t onmouseover="top.MyJavascriptFunction('u32');return true">...</t>

我在 mytest.htm 中的脚本:

<script type="text/javascript">
function MyJavascriptFunction(s) {
  console.log(s);
}
</script>

SVG 有属性:xmlns、width、height 和 viewport。

【讨论】:

  • 谢谢,父母工作得很好,你有没有机会知道在使用 svg 和 JavaScript 以确定光标在 svg 上的位置时,页面上的 x 和 y 位置是否被不同地处理?我需要使用调用你帮助我的 JavaScript 函数的能力,JavaScript 应该显示一个 div,我有 JavaScript 函数,但它与 svg 文件一起不能按预期工作,但如果我使用相同html链接上的脚本它按预期工作..
  • 我已经更新了我的测试用例以发送 evt 对象,并且 evt 对象中的 clientX、clientY、pageX、pageY 似乎是相对于 SVG 容器的,所以我猜,在 html 文件中,您需要将其添加到 x,y 位置。
  • 嗯,我看到这也取决于我用光标进入svg文件的位置,例如我从右下角进入svg文件并移动光标并触发onmouseover事件,然后div显示在右下角。但是,如果我进入 svg 文件的右上角并触发相同的 onmouseover 事件,则 div 会显示在右上角......这使得将 div 放置在我想要的位置非常困难甚至不可能他们是,这是实际svg“链接”的右侧与onmouse over event.... :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多