SVG——新一代Web设计及互动媒体的革新
首页 SVG入门 SVG介绍 SVG常见问题问答 - 怎样为制作的SVG增加鼠标右键控制功能?

SVG常见问题问答 - 怎样为制作的SVG增加鼠标右键控制功能?

文章首页
SVG常见问题问答
怎样才能将JPG转换为SVG?
SVG Mobile Profiles 是什么
Adobe SVG viewer是什么?
SVG中Object背景为什么无法透明?
如何调出inkscape的中文界面?
如何用Adobe Illustrator CS3使JPG,PNG等格式的图片做成SVG格式?
怎样把用ILLUSTRATOR做的SVG图片文件变小?
怎样修改svg格式里面的文字?
为什么我做的svg文件在IE里能打开,但在opera打不开?
为什么svg文件在电脑里能打开,但在手机上却打不开?
我想把别网站上的svg图放到自己的网站,怎么办?
什么是SVGZ?与SVG有什么区别?怎样解压缩SVGZ?
什么是GIS?
我是平面设计师,不懂编程,我应该怎样去学习SVG?
SVG提供了哪些GIF 和JPEG所不能提供的?
什么是SVG?基于XML有何优势?什么是开放标准,为什么开放很重要?
谁是W3C SVG工作组的成员?SVG和其它W3C创始的关系?
SVG和VML及PGML关系是怎样的?
怎样为制作的SVG增加鼠标右键控制功能?
FLEX可以嵌入SVG吗
SVG的小常识问与答
什么是SVG文件
BATIK SVG矢量图形栅格化的原理是什么
Adobe收购Flash后SVG有前途吗
   提问

  怎样为制作的SVG增加鼠标右键控制功能?

  回答(一直在漂)

  在浏览svg图形时,我们可以看到图形已经有右键菜单,通过contextMenu来获取浏览器自带的右键菜单,用 printNode(contextMenu),可以看到菜单的结构,按这结构,我们可以自己构造需要的右键菜单,然后用replaceChild将原菜 单替换成自己构造的右键菜单。示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg>
<defs>
<menu id='menu1' >
<header>Menu utilisateur</header>
<item id='Menu1.1' onactivate='Toto()'>工作1</item>
<item id='Menu1.2' onactivate='Titi(2)'>工作2</item>
<item id='Menu2.0'/>
<item id='Menu2.1' action="ZoomIn"> 缩小 </item>
<item id='Menu2.2' action='ViewSource'>浏览源代码</item>
</menu>
</defs>
<script>
<![CDATA[
var svgdoc = evt.getTarget().getOwnerDocument();
var newMenuRoot=parseXML(printNode(svgdoc.getElementById('menu1')),contextMenu);
contextMenu.replaceChild(newMenuRoot,contextMenu.firstChild);
function Toto()
{
alert('你点的是工作1')
}
function Titi(strParam)
{
alert('你点的是工作2,而且还传递了一个参数: ' + strParam)
}
]]>
</script>
</svg>

注意:示例代码可以copy到写字本,然后保存文件格式为SVG。记得文件类型选择UTF-8,否则中文将无法正常显示。