以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  SVG加入HTML后事件响应的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=38898)


--  作者:pipilu
--  发布时间:10/14/2006 3:24:00 PM

--  SVG加入HTML后事件响应的问题
我现在用SVG做统计图,打算从Sevlet得到统计结果(XML文件),然后用已经写好的XSL转为SVG置于html中。转换后的结果是下面这个样子:
<html  xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3c.org/2000/svg">
<object id="AdobeSVG"
 CLASSID="clsid:78156a80-c6a1-4bbf-8e6a-3cd390eeb4e2">
</object>
<?import namespace="svg" implementation="#AdobeSVG"?>
<head></head>
<body>
      <svg:svg width="" height="">
             <svg:g>
           .....本部分省略,,SVG本身没有问题,每个节点都带上SVG命名空间前缀。
             </svg:g>
      </svg:svg>
</body>
</html>
统计图是显示出来了,但无法交互。也就是加在<polyline> <rect>这些节点里的onmouseover onclick等事件响应机制都没有作用。
你们遇见过这种情况么?怎么办啊?
VML中加了命名空间的节点就可以响应鼠标事件,这是怎么回事啊。
--  作者:pipilu
--  发布时间:10/17/2006 2:07:00 PM

--  
看来是浏览器确实不支持这种方式。
我换了个办法:
     在页面上放个空的SVG(文件内容只有这一个节点:<svg></svg>),然后在页面脚本里用xsl转换完xml后(生成了<g><polyline/></g>....这些svg统计图文件内容),然后调用空svg里的javascript:   " document.documentElement.appendChild(parseXML(str, document));"  其中str是xsl处理后生成的字符串。这样就可以了。
      要注意的是:xsl的output method是"html",也就是:<xsl:output method="html" media-type="image/svg" encoding="UTF-8" indent="yes"/>
      这样xsl转换完的xml形式的字符串就不会带<?xml version="1.0"?>了—— 可以成功的执行:parseXML(str, document)了。
--  作者:chenchen870
--  发布时间:10/30/2007 1:58:00 PM

--  
用<embed>标签
--  作者:chenchen870
--  发布时间:11/28/2007 5:44:00 PM

--  
就该用embed标签,用object是不支持事件响应的
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms