以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  SVG剛入道新手求助关于svg右键与区域绑定的问题!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=29656)


--  作者:zwh
--  发布时间:3/31/2006 3:52:00 PM

--  SVG剛入道新手求助关于svg右键与区域绑定的问题!
我用如下代碼實現右键与区域绑定﹐但是當我點墼矩形外的區域時﹐也會彈出與點墼矩形內的區域時一樣的菜單﹐請問各位高人如何設定才能使矩形內外菜單不一樣﹖
right_click.svg如下﹕
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000802//EN"
"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd">

<svg width="600" height="400">
<script type="text/ecmascript">
<![CDATA[

var target;
function onmousedown(evt){
getURL("rightbutton.xml", fileLoaded);
function fileLoaded (data) {
var msg = '';
if(data.success) {
var newMenuRoot=parseXML(data.content,contextMenu);
contextMenu.replaceChild(newMenuRoot,contextMenu.getDocumentElement());  
}
}
if(evt.button==2) target=evt.getTarget();
}
function showAlert(evt){
if(target!=null)
{
alert(target.getAttribute("id"));
}
target=null;
}
]]> </script>
<g >
<rect id="a" x="2cm" y="1cm" width="6cm" height="3cm" fill="green" stroke="blue"

stroke-width="5" onmousedown="onmousedown(evt)"/>
<text id="b" x="5cm" y="5cm" style="font-family:Verdana; font-size:16pt; fill:blue">
Hello, SVGViewer!
</text>
</g>
</svg>

rightbutton.xml如下﹕

<?xml version="1.0" encoding="UTF-8"?>
<menu id="myCustomMenu">

<item action="ZoomIn" id="ZoomIn">ZoomIn</item>
<item action="ZoomOut" id="ZoomOut">ZoomOut</item>
<item action="OriginalView" id="OriginalView">OriginalView</item>
<separator/>
<item action="Find" id="Find">Find</item>
<item action="Copy" id="Copy">Copy</item>
<separator/>
           <item onactivate="showAlert(evt)">ShowAlert</item>

</menu>


--  作者:mxr
--  发布时间:4/18/2006 4:54:00 PM

--  
我知道你的问题在哪里,但是不清楚怎么改。

因为你已经把默认的右键功能修改了,所以任何时候使用的都是你自定义的右键功能。


--  作者:tamefox
--  发布时间:4/25/2006 8:42:00 PM

--  
right_click.svg:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd">
<svg width="600" height="400" onload="showMenu(evt)">
<script type="text/ecmascript">
<![CDATA[

var target;
function showMenu(evt){
var obj=evt.target;
var id=obj.getAttribute("id");
var menu;
if(id=="rectB")menu="menuB.xml";
else menu="menuA.xml";
getURL(menu, fileLoaded);
function fileLoaded (data) {
var msg = '';
if(data.success) {
var newMenuRoot=parseXML(data.content,contextMenu);
contextMenu.replaceChild(newMenuRoot,contextMenu.getDocumentElement());  
}
}
}
]]> </script>
<g>
<rect id="rectA" width="600" height="400" fill="none" stroke="none" onmousedown="showMenu(evt)" pointer-events="visible"/>
<rect id="rectB" x="2cm" y="1cm" width="6cm" height="3cm" fill="green" stroke="blue"

stroke-width="5" onmousedown="showMenu(evt)"/>
<text id="b" x="5cm" y="5cm" style="font-family:Verdana; font-size:16pt; fill:blue">
Hello, SVGViewer!
</text>
</g>
</svg>

menuA.xml如下﹕

<?xml version="1.0" encoding="UTF-8"?>
<menu id="myCustomMenu">

<item action="ZoomIn" id="ZoomIn">ZoomIn</item>
<item action="ZoomOut" id="ZoomOut">ZoomOut</item>
<item action="OriginalView" id="OriginalView">OriginalView</item>
<separator/>
<item action="Find" id="Find">Find</item>
<item action="Copy" id="Copy">Copy</item>
<separator/>
           <item onactivate="showAlert(evt)">ShowAlert</item>

</menu>

menuB.xml如下﹕

<?xml version="1.0" encoding="UTF-8"?>
<menu id="myCustomMenu">

<item action="ZoomIn" id="ZoomIn">放大</item>
<item action="ZoomOut" id="ZoomOut">缩小</item>
<item action="OriginalView" id="OriginalView">OriginalView</item>
<separator/>
<item action="Find" id="Find">Find</item>
<item action="Copy" id="Copy">Copy</item>
<separator/>
           <item onactivate="showAlert(evt)">ShowAlert</item>

</menu>


虽然可以实现显示不同的菜单,但第一次点击的时候总会出现前一次的菜单,所以最好不要将菜单文件外放!


--  作者:zwh
--  发布时间:5/21/2006 5:44:00 PM

--  
不好意思!好久没来了,前段时间在忙别的项目,没做SVG了
今天刚好有空来了这里,非常高兴看到有两位大侠帮我思考了那个问题,
真的非常感谢!
但我把您的代码运行了,还是出现"第一次点击的时候总会出现前一次的菜单"的情况,
由于要实现右键与区域绑定,我也不太理解您的"最好不要将菜单文件外放!"
的意思,还请您明示,或能提供好的解决办法,不胜感激!!!


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
48.828ms