带Atvise的SVG中的Javascript

带Atvise的SVG中的Javascript,javascript,svg,Javascript,Svg,我是新来的,我有很多问题 我使用一个名为Atvise的程序,这是一个建筑自动化中PLC的可视化软件。我使用SVG和Javascript 以下代码在普通编辑器中工作,但在程序Atvise中不工作 <?xml version='1.0'?> <svg width="600" xmlns:ev="http://www.w3.org/2001/xml-events" version="1.1" xmlns="http://www.w3.org/2000/svg" height="50

我是新来的,我有很多问题

我使用一个名为Atvise的程序,这是一个建筑自动化中PLC的可视化软件。我使用SVG和Javascript

以下代码在普通编辑器中工作,但在程序Atvise中不工作

 <?xml version='1.0'?>
<svg width="600" xmlns:ev="http://www.w3.org/2001/xml-events" version="1.1" xmlns="http://www.w3.org/2000/svg" height="500" baseProfile="tiny" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:atv="http://webmi.atvise.com/2007/svgext">
 <defs/>
 <metadata>
  <atv:gridconfig width="20" enabled="false" height="20" gridstyle="lines"/>
  <atv:snapconfig width="10" enabled="false" height="10"/>
 </metadata>
 <desc>Example script01 - invoke an ECMAScript function from an onclick event
  </desc>
 <!-- ECMAScript to change the radius with each click -->
 <!-- Outline the drawing area with a blue line -->
 <rect width="598" x="1" y="1" fill="none" height="498" stroke="blue" id="id_0" atv:refpx="300" atv:refpy="250"/>
 <!-- Act on each click event -->
 <circle fill="red" cx="300" cy="225" onclick="circle_click(evt)" r="200" id="id_1" atv:refpx="300" atv:refpy="225"/>
 <text x="300" y="480" font-family="Verdana" text-anchor="middle" id="id_2" atv:refpx="300" atv:refpy="466" font-size="35">
    Click on circle to change its size
  </text>
 <script type="text/ecmascript"><![CDATA[
function circle_click(evt) {
      var circle = evt.target;
      var currentRadius = circle.getAttribute("r");
      if (currentRadius == 100)
        circle.setAttribute("r", currentRadius*2);
      else
        circle.setAttribute("r", currentRadius*0.5);
    }

//test]]></script>
</svg>

示例script01-从onclick事件调用ECMAScript函数
单击圆形以更改其大小
程序将此代码处理为此(从FF的“查看源代码”中读取)


示例script01-从onclick事件调用ECMAScript函数
单击圆形以更改其大小
这不管用! 我从firebug“ReferenceError:circle\u click未定义”中得到以下错误

我有很多可以工作的代码,但只有Javascript中没有DOM(?)操作的东西


每个人都能帮助我了解这种情况以及如何编写能够工作的代码吗?

被操纵的SVG已经将您的
循环\u click()
函数移到了另一个函数中,这是一个传递给
webMI.proxy()
的匿名函数。这意味着
circle\u click()
现在是一个只能从匿名函数中访问的私有函数

我不使用Atvise,所以我不知道他们是否有定义事件处理程序函数的推荐方法

同时,您可以确保在窗口名称空间中定义了单击处理程序,从而使其正常工作。然后,事件处理系统将可以看到它

<script type="text/ecmascript"><![CDATA[

Window.circle_click = function(evt) {
  var circle = evt.target;
  var currentRadius = circle.getAttribute("r");
  if (currentRadius == 100)
    circle.setAttribute("r", currentRadius*2);
  else
    circle.setAttribute("r", currentRadius*0.5);
}

]]></script>

with document.getElementById(“id_1”).circle\u click=function(evt){…}它可以工作,谢谢你的帮助!
<script type="text/ecmascript"><![CDATA[

Window.circle_click = function(evt) {
  var circle = evt.target;
  var currentRadius = circle.getAttribute("r");
  if (currentRadius == 100)
    circle.setAttribute("r", currentRadius*2);
  else
    circle.setAttribute("r", currentRadius*0.5);
}

]]></script>