Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从svg文件中的onmouse事件调用javascript函数_Javascript_Svg_Call - Fatal编程技术网

从svg文件中的onmouse事件调用javascript函数

从svg文件中的onmouse事件调用javascript函数,javascript,svg,call,Javascript,Svg,Call,我有一个svg文件,其中包含 <text transform="matrix(1 0 0 1 162.7803 192.52)" font-family="'Helvetica'" font-size="11">30</text> 30 如果我修改该字符串,使其看起来像这样,从而能够调用JavaScript函数 <text transform="matrix(1 0 0 1 162.7803 192.52)" onmouseover="MyJavascriptF

我有一个svg文件,其中包含

<text transform="matrix(1 0 0 1 162.7803 192.52)" font-family="'Helvetica'" font-size="11">30</text>
30
如果我修改该字符串,使其看起来像这样,从而能够调用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>
30
那么,是否可以调用与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>
30
svg文件如下所示

<embed src="myfile.svg"/>


这根本不可能,还是我做得不对?

我在这里做了一个简单的测试用例: 其中svg文件调用MyJavascriptFunction,该函数在myfile.htm中定义 来自myfile.svg中的onmouseover事件

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

。。。
mytest.htm中的我的脚本:

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

函数MyJavascriptFunction(s){
控制台日志;
}

SVG具有以下属性:xmlns、宽度、高度和视口。

不要嵌入,只需将SVG正文包含到html中即可。否则您的浏览器将无法初始化事件处理程序。谢谢,parent工作正常,您是否知道在使用svg和JavaScript来确定光标在svg上的位置时,页面上的x和y位置是否得到了不同的处理?我需要使用您帮助我调用的JavaScript函数的功能,JavaScript应该显示一个div,我有JavaScript函数,但它不能与svg文件一起工作,但是,如果我在html链接上使用相同的脚本,它将按预期工作。我已经更新了测试用例以发送evt对象,evt对象中的clientX、clientY、pageX、pageY似乎与SVG容器有关,因此我猜,在html文件中,您需要将其添加到x、y位置。Hmm,我发现这还取决于我使用光标输入svg文件的位置,例如,如果我从右下角输入svg文件并移动光标并触发onmouseover事件,那么div将显示在右下角。但是如果我输入svg文件的右上角并触发相同的onmouseover事件,那么div将显示在右上角。。。。这使得很难甚至不可能将div放置在我想要的位置,即与onmouse over事件的实际svg“链接”的右侧(
<script type="text/javascript">
function MyJavascriptFunction(s) {
  console.log(s);
}
</script>