新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → 紧急求助:在JSP里调用SVG的脚本 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 10996 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 紧急求助:在JSP里调用SVG的脚本 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     犬神狼 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给犬神狼发送一个短消息 把犬神狼加入好友 查看犬神狼的个人资料 搜索犬神狼在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看犬神狼的博客楼主
    发贴心情 紧急求助:在JSP里调用SVG的脚本

    我在JSP里嵌入了SVG地图,试图通过把JSP读数据库后返回的数据显示在SVG图中,但是在调用相应的SVG脚本函数是发生了奇怪的问题:

    Result.jsp
    <html>
    <head>
    <title>JSP</title>

    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript">

    function f1(str)
    {
        window.setStr(str);
    }   
    function f2(str)
    {   alert(str); }
    function f3(str) {
       var s1=str;
       
      }
    </script>
    </head>

    <BODY background="images/bg_main.gif" leftmargin="15" topmargin="0" marginwidth="0" marginheight="0">

    <% int len=10;    
       String[] univ=new String[len];
       int[] num=new int[len];
       int count=0;
       univ[0]="Massachusetts Institute of Technology";
       univ[1]="Stanford University";
       univ[2]="UC Berkeley";
       univ[3]="Carnegie Mellon University";
       univ[4]="University of Illinois at Urbana-Champaign";
       univ[5]="California Institute of Technology";
       univ[6]="University of Michigan";
       univ[7]="Cornell University";
       univ[8]="Princeton University";
       univ[9]="Purdue University";
       %>

    <%@ page contentType="text/html;charset=GB2312"
       language="java" import="java.sql.*" %>
    <%   

       Connection con=null;
      String tableName="researchers"+year;
       for(int i=0;i<len;i++)
        {
         try{
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      con=DriverManager.getConnection("jdbc:odbc:researchEyes");
      Statement statement=con.createStatement();
            
      ResultSet rs=statement.executeQuery("select count(researcherName)as coun from domainRe , " + tableName + " where domainRe.domain =" + tableName +".domain and " + tableName + ".university='" + univ[i] + "' and ( domainRe.level2='" + domain + "' or domainRe.level1='" + domain + "' or domainRe.domain='" + domain + "' )");
      
       for(int j=0;rs.next();j++) 
         {
            num[i]=rs.getInt("coun");
            count=count+num[i];
        }
      rs.close();
      con.close();
       }
     catch (Exception e)
        {
      out.println(e.getMessage());
        }
     if(num[i]!=0)
        out.println("<p class='style1'>"+univ[i]+" : "+"<span class='style2'>"+num[i]+"</span></p>");
     }  
     
        %>

    <input id="zoomIn" type="button"  value="zoomIn" onclick="f1(id)" >
    <input id="zoomOut" type="button"  value="zoomOut" onclick="f1(id)" >
    <embed width="900" height="700" name="picture" PLUGINSPAGE="http://www.adobe.com/svg/viewer/install/"
                src="mapScript.svg" type="image/svg+xml">

    <%for(int k=0;k<len;k++)
     {  
       if(num[k]!=0){%>
       <script language="JavaScript">  
          var s1="<%=univ[k]%>";
          var s2=<%=num[k]%>;
         window.setCir(s1,s2);
      </script>
     <%}}%>
    </body>
    </html>

    mapScript.svg

    <svg width="900" height="650" viewBox="(0,0,900,650)" onload="init(evt)">
    <script type="text/ecmascript"> <![CDATA[
        var a=1;
        var choice=-1;
       function init(event)
        {
           //target = event.getTarget();
           //svgDocument = target.getOwnerDocument();
         parent.setStr=svgSetstr;
         parent.setCir=svgSetcilcle;     
       }
       function svgSetstr(str)
      {
            if(str=="zoomIn") {choice=1;return;}
          if(str=="zoomOut") {choice=0;}
      
       }

       function svgSetcilcle(s1,s2)
       {
         
         var cirB=svgDocument.getElementById(s1+"b");
         var cirR1=svgDocument.getElementById(s1+"r");
         var cirR2=svgDocument.getElementById(s1+"w");
         cirB.setAttribute("visibility","hidden");
        
         var a=s2/2.5+2.3;
         
         if(a>20) {a=16; }
         var b=a/2.8;
         var curx=cirR2.getAttribute("cx");
         var cury=cirR2.getAttribute("cy");
       
         cirR1.setAttribute("r",a);
         cirR2.setAttribute("r",b);
         cirR2.setAttribute("cx",curx-a/2.8);
         cirR2.setAttribute("cy",cury-a/2.8);

       }
            
       function mouseClick2(event)
        {
             var ellipse = event.target;
            var currrentid=ellipse.getAttribute("id");
            parent.f2(currentid);
         }
    ]]> </script>
    </svg>
    请问是不是可以把SVG的脚本直接写在JSP里面,或者还有其他的能直接调用SVG脚本函数的方法?


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/4 9:51:00
     
     caoxy 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:18
      积分:148
      门派:XML.ORG.CN
      注册:2005/4/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给caoxy发送一个短消息 把caoxy加入好友 查看caoxy的个人资料 搜索caoxy在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看caoxy的博客2
    发贴心情 
    利用SVG的DOM接口和javascript就可以的。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/4 17:25:00
     
     犬神狼 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给犬神狼发送一个短消息 把犬神狼加入好友 查看犬神狼的个人资料 搜索犬神狼在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看犬神狼的博客3
    发贴心情 
    可是我的代码在调用SVG脚本的时候会出错啊。
    <%for(int k=0;k<len;k++)
    {  
       if(num[k]!=0){%>
       <script language="javascript">  
          var s1="<%=univ[k]%>";
          var s2=<%=num[k]%>;
         window.setCir(s1,s2); //这句用来调SVG脚本的时候就会报错,到底为什么啊?
      </script>
    <%}}%>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/4 18:29:00
     
     sunlice 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:15
      积分:119
      门派:XML.ORG.CN
      注册:2004/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sunlice发送一个短消息 把sunlice加入好友 查看sunlice的个人资料 搜索sunlice在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sunlice的博客4
    发贴心情 
    错误是什么?贴上来看看。
    你不用把 parent.setStr=svgSetstr;
         parent.setCir=svgSetcilcle;
    放在init中 直接写出来就行了。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/8 17:16:00
     
     犬神狼 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给犬神狼发送一个短消息 把犬神狼加入好友 查看犬神狼的个人资料 搜索犬神狼在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看犬神狼的博客5
    发贴心情 
    错误是不支持此属性或方法。
    我在SVG的初始时就令 parent.setStr=svgSetstr;
                                  parent.setCir=svgSetcilcle;
    是为了把HTML的setStr函数与SVG的svgSetstr函数关联起来,这样才可以实现HTML对SVG脚本的调用。
         不然HTML要怎么调用SVG本身的脚本函数呢?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/9 9:34:00
     
     sunlice 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:15
      积分:119
      门派:XML.ORG.CN
      注册:2004/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sunlice发送一个短消息 把sunlice加入好友 查看sunlice的个人资料 搜索sunlice在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sunlice的博客6
    发贴心情 
    楼主可能没有理解我的意思,我的意思是不把
    parent.setStr=svgSetstr;
    parent.setCir=svgSetcilcle;
    放在你的初始化函数里面。
    因为涉及到变量的作用域和初始化时间的问题。
    所以需要把
    parent.setStr=svgSetstr;
    parent.setCir=svgSetcilcle;
    作为全局的变量声明。
    就是
    var a=1;
        var choice=-1;
         parent.setStr=svgSetstr;
         parent.setCir=svgSetcilcle;     
       function init(event)
        {
           //target = event.getTarget();
           //svgDocument = target.getOwnerDocument();

       }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/9 15:53:00
     
     犬神狼 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给犬神狼发送一个短消息 把犬神狼加入好友 查看犬神狼的个人资料 搜索犬神狼在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看犬神狼的博客7
    发贴心情 
    这样啊,谢谢了,我试试先
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/9 20:04:00
     
     wulemale 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:25
      积分:172
      门派:XML.ORG.CN
      注册:2005/4/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wulemale发送一个短消息 把wulemale加入好友 查看wulemale的个人资料 搜索wulemale在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wulemale的博客8
    发贴心情 
    你这个SVG没有id居然也能调用?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/14 21:09:00
     
     犬神狼 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给犬神狼发送一个短消息 把犬神狼加入好友 查看犬神狼的个人资料 搜索犬神狼在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看犬神狼的博客9
    发贴心情 
    恩,因为并不是直接通过JSP的脚本来访问SVG的元素,所以在JSP中不需要通过SVG的ID来获得SVGDocument。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/14 22:12:00
     
     wulemale 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:25
      积分:172
      门派:XML.ORG.CN
      注册:2005/4/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wulemale发送一个短消息 把wulemale加入好友 查看wulemale的个人资料 搜索wulemale在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wulemale的博客10
    发贴心情 
    window.setCir(s1,s2);--调用的是哪一个方法?
    你调试通过了吗,源代码帖出来吧,谢谢!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/15 8:46:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/21 12:07:28

    本主题贴数11,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    140.625ms