以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  在程序中的中文显示(再谈中文显示问题)[讨论]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=9540)


--  作者:卷积内核
--  发布时间:8/24/2004 4:02:00 PM

--  在程序中的中文显示(再谈中文显示问题)[讨论]
虽然用<text>可以显示中文,但在程序中不用<text>的地方中文怎么显示呢?
比如下面的菜单程序中的菜单上的文字怎么显示呢?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
  <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
]>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  onload="getSVGDoc(evt);createMenues()">  
  
  <title>SVG-菜单演示程序</title>
  <desc>SVG-Spezifikation in Beispielen</desc>
  <defs>
    <style type="text/css">
      <![CDATA[
      rect.haupt
      {
        fill: #FFC;
        stroke: #000;
        stroke-width: 2px;
      }
      rect.unter
      {
        fill: #EEF;
        stroke: #000;
        stroke-width: 1px;
      }
      text.haupt
      {
        fill: #00C;
        font-size: 12px;
        text-anchor: middle;
        pointer-events: none;
      }
      text.unter
      {
        fill: #000;
        font-size: 11px;
        text-anchor: middle;
        pointer-events: none;
      }
      a text.unter
      {
        fill: #F00;
        pointer-events: inherit;
      }
      ]]>
    </style>
    <script type="text/javascript">
      <![CDATA[
      var svgdoc,svgroot;
   
      function getSVGDoc(load_evt)
      {
        svgdoc=load_evt.target.ownerDocument;
        svgroot=svgdoc.documentElement;
      }
      function createMenues()
      {
        var menues,hlinks,target,menue_x,menue_y,menue_b,menue_h,haupt_out,haupt_over,unter_out,unter_over,dx,dy;
        var haupt_g,haupt_r,haupt_t,haupt_txt,haupt_s1,haupt_s2,haupt_s3,haupt_s4;
        var unter_g,unter_r,unter_t,unter_txt,unter_s1,unter_s2,unter_s3,unter_s4,unter_s5,unter_s6,unter_a;
        // Arrays fuer die Menuepunkte und die Links
        menues=new Array();
        hlinks=new Array();
        // Vorgaben fuer Positionen und Farben - Anfang
          menue_x=20;        // Menue x (erstes Rechteck)
          menue_y=60;        // Menue y (erstes Rechteck)
          menue_b=100;       // Breite der Rechtecke fuer Haupt- und Untermenues
          menue_h=20;        // Hoehe der Rechtecke fuer Haupt- und Untermenues
          haupt_out="#FFC";  // Mouseout-Farbe der Hauptmenuepunkte (=Grundfarbe, siehe CSS-Klasse rect.haupt)
          haupt_over="#FF0"; // Mouseover-Farbe der Hauptmenuepunkte
          unter_out="#EEF";  // Mouseout-Farbe der Untermenuepunkte (=Grundfarbe, siehe CSS-Klasse rect.unter)
          unter_over="#CFC"; // Mouseover-Farbe der Untermenuepunkte
          dx=50;             // x-Versatz der Menuetexte
          dy=15;             // y-Versatz der Menuetexte
          target="_top";     // Linkziel
        // Schema:
        // menues[0 bis n-1]=new Array("Hauptmenuetext","Untermenuetext_1",...,"Untermenuetext_n");
        // Hier: 3 Hauptmenuepunkte mit 5/3/1 Untermenuepunkten
        // hlinks[0 bis n-1]=new Array("url_1",...,"url_n");
        // wenn kein Link erscheinen soll, einen Leerstring "" angeben
        // Hier: im 1. Untermenue ist Menuepunkt 4, im 2. Untermenue Menuepunkt 1 verlinkt
           menues[0]=new Array("Main","Untermenü 1.1","Untermenü 1.2","Untermenü 1.3","Untermenü 1.4","Untermenü 1.5");
           hlinks[0]=new Array("","","","http://www.163.com","");
           menues[1]=new Array("公司简介","公司历史","产品简介","发展蓝图");
           hlinks[1]=new Array("http://www.history.com","","");
           menues[2]=new Array("customer","客户管理");
           hlinks[2]=new Array("");
        // Menuetexte der n Menues und URLs der n Links festlegen - Ende
        // Menuestruktur dynamisch aufbauen - Anfang
        for(i=0;i<menues.length;i++)
        {
          // Hauptmenues mit Eintraegen erzeugen - Anfang
          haupt_g=svgdoc.createElement("g");
          haupt_g.setAttribute("id","men"+parseInt(i+1));
          haupt_r=svgdoc.createElement("rect");
          haupt_r.setAttribute("x",menue_x+i*menue_b);
          haupt_r.setAttribute("y",menue_y);
          haupt_r.setAttribute("width",menue_b);
          haupt_r.setAttribute("height",menue_h);
          haupt_r.setAttribute("class","haupt");
          haupt_s1=svgdoc.createElement("set");
          haupt_s1.setAttribute("attributeName","fill");
          haupt_s1.setAttribute("attributeType","CSS");
          haupt_s1.setAttribute("to",haupt_over);
          haupt_s1.setAttribute("begin","mouseover");
          haupt_s2=svgdoc.createElement("set");
          haupt_s2.setAttribute("attributeName","fill");
          haupt_s2.setAttribute("attributeType","CSS");
          haupt_s2.setAttribute("to",haupt_over);
          haupt_s2.setAttribute("begin","umen"+parseInt(i+1)+".mouseover");
          haupt_s3=svgdoc.createElement("set");
          haupt_s3.setAttribute("attributeName","fill");
          haupt_s3.setAttribute("attributeType","CSS");
          haupt_s3.setAttribute("to",haupt_out);
          haupt_s3.setAttribute("begin","mouseout");
          haupt_s4=svgdoc.createElement("set");
          haupt_s4.setAttribute("attributeName","fill");
          haupt_s4.setAttribute("attributeType","CSS");
          haupt_s4.setAttribute("to",haupt_out);
          haupt_s4.setAttribute("begin","umen"+parseInt(i+1)+".mouseout");
          haupt_t=svgdoc.createElement("text");
          haupt_t.setAttribute("x",menue_x+i*menue_b+dx);
          haupt_t.setAttribute("y",menue_y+dy);
          haupt_t.setAttribute("class","haupt");
          haupt_txt=svgdoc.createTextNode(menues[i][0]);
          haupt_r.appendChild(haupt_s1);
          haupt_r.appendChild(haupt_s2);
          haupt_r.appendChild(haupt_s3);
          haupt_r.appendChild(haupt_s4);
          haupt_t.appendChild(haupt_txt);
          haupt_g.appendChild(haupt_r);
          haupt_g.appendChild(haupt_t);
          // Hauptmenues mit Eintraegen erzeugen - Ende
          // Gruppe fuer die Untermenuepunkte des i-ten Hauptmenues - Anfang
          unter_g=svgdoc.createElement("g");
          unter_g.setAttribute("id","umen"+parseInt(i+1));
          unter_g.setAttribute("style","display: none");
          unter_s1=svgdoc.createElement("set");
          unter_s1.setAttribute("attributeName","display");
          unter_s1.setAttribute("attributeType","CSS");
          unter_s1.setAttribute("to","block");
          unter_s1.setAttribute("begin","men"+parseInt(i+1)+".mouseover");
          unter_s2=svgdoc.createElement("set");
          unter_s2.setAttribute("attributeName","display");
          unter_s2.setAttribute("attributeType","CSS");
          unter_s2.setAttribute("to","none");
          unter_s2.setAttribute("begin","men"+parseInt(i+1)+".mouseout");
          // Gruppe fuer die Untermenuepunkte des i-ten Hauptmenues - Ende
          // Untermenuepunkte fuer das i-te Hauptmenue - Anfang
          for(j=1;j<menues[i].length;j++)
          {
            unter_r=svgdoc.createElement("rect");
            unter_r.setAttribute("x",menue_x+i*menue_b);
            unter_r.setAttribute("y",menue_y+j*menue_h);
            unter_r.setAttribute("width",menue_b);
            unter_r.setAttribute("height",menue_h);
            unter_r.setAttribute("class","unter");
            if(hlinks[i][j-1]=="")unter_r.setAttribute("onclick","MenueAktion('"+parseInt(i+1)+"."+j+"')");
            unter_s3=svgdoc.createElement("set");
            unter_s3.setAttribute("attributeName","fill");
            unter_s3.setAttribute("attributeType","CSS");
            unter_s3.setAttribute("to",unter_over);
            unter_s3.setAttribute("begin","mouseover");
            unter_s4=svgdoc.createElement("set");
            unter_s4.setAttribute("attributeName","fill");
            unter_s4.setAttribute("attributeType","CSS");
            unter_s4.setAttribute("to",unter_out);
            unter_s4.setAttribute("begin","mouseout");
            unter_s5=svgdoc.createElement("set");
            unter_s5.setAttribute("attributeName","fill");
            unter_s5.setAttribute("attributeType","CSS");
            unter_s5.setAttribute("to",unter_over);
            unter_s5.setAttribute("begin","link"+i.toString()+j.toString()+".mouseover");
            unter_s6=svgdoc.createElement("set");
            unter_s6.setAttribute("attributeName","fill");
            unter_s6.setAttribute("attributeType","CSS");
            unter_s6.setAttribute("to",unter_out);
            unter_s6.setAttribute("begin","link"+i.toString()+j.toString()+".mouseout");
          
            unter_t=svgdoc.createElement("text");
            unter_t.setAttribute("x",menue_x+i*menue_b+dx);
            unter_t.setAttribute("y",menue_y+j*menue_h+dy);
            unter_t.setAttribute("class","unter");
            unter_txt=svgdoc.createTextNode(menues[i][j]);
            unter_a=svgdoc.createElement("a");
            unter_a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",hlinks[i][j-1]);
            unter_a.setAttribute("target",target);
            unter_a.setAttribute("id","link"+i.toString()+j.toString());
            unter_a.appendChild(unter_t);
            unter_r.appendChild(unter_s3);
            unter_r.appendChild(unter_s4);
            unter_r.appendChild(unter_s5);
            unter_r.appendChild(unter_s6);
            unter_t.appendChild(unter_txt);
            
            unter_g.appendChild(unter_s1);
            unter_g.appendChild(unter_s2);
            unter_g.appendChild(unter_r);
            if(hlinks[i][j-1])unter_g.appendChild(unter_a);
            else unter_g.appendChild(unter_t);
            haupt_g.appendChild(unter_g);
          }
          // Untermenuepunkte fuer das i-te Hauptmenue - Ende
          // Hauptmenue mit Untermenues in den DOM-Baum einhaengen
          svgroot.appendChild(haupt_g);
        }
        // Menuestruktur dynamisch aufbauen - Ende
      }
      function MenueAktion(men)
      {
        alert("Menüpunkt "+men+" wurde geklickt.");
      }
      ]]>
    </script>
  </defs>
  <text style="fill:red;" font-size="32" font-family="SimSun" x="350" y="50" width="200" height="30">
    欢迎光临本站</text>
</svg>


--  作者:xuelh
--  发布时间:8/27/2004 9:12:00 AM

--  
把中文全换成utf编码
--  作者:卷积内核
--  发布时间:8/27/2004 9:25:00 AM

--  
保存时已经全转换了,你调出来了吗?
--  作者:卷积内核
--  发布时间:8/27/2004 11:06:00 AM

--  
好高兴,我解决拉
前面声明中加上
text
{
font-family="SimSun"
}
就好拉~~!!!
--  作者:卷积内核
--  发布时间:8/27/2004 11:28:00 AM

--  
也就是说以后在中文显示时嵌套在script中的中文要显示时,只要在前面的text中声明它的
中文字体类型格式就可以拉,同时不要忘了保存格式为 UTF-8
--  作者:wisd0m
--  发布时间:8/27/2004 9:04:00 PM

--  
版主果然厉害啊!一下就解决了,我考虑了好久啊

我当时只在function底下加入了font-family="SimSun"
结果没用


--  作者:wisd0m
--  发布时间:8/27/2004 9:47:00 PM

--  
我试一下,还是不行

这个声明
text
       {
        font-family="SimSun"
       }
应该加在哪个地方啊?


--  作者:wisd0m
--  发布时间:8/27/2004 9:47:00 PM

--  
我试一下,还是不行

这个声明
text
       {
        font-family="SimSun"
       }
应该加在哪个地方啊?


--  作者:卷积内核
--  发布时间:8/30/2004 8:14:00 AM

--  
<title>SVG-菜单演示程序</title>
  <desc>SVG-Spezifikation in Beispielen</desc>
  <defs>
    <style type="text/css">
      <![CDATA[
      rect.haupt
      {
        fill: #FFC;
        stroke: #000;
        stroke-width: 2px;
      }
text
       {
        font-family="SimSun"
       }
加在这里就可以拉,随便一个对文档声明定义的地方就可以


--  作者:wisd0m
--  发布时间:8/31/2004 1:40:00 PM

--  
以下是引用卷积内核在2004-8-30 8:14:13的发言:
<title>SVG-菜单演示程序</title>
   <desc>SVG-Spezifikation in Beispielen</desc>
   <defs>
     <style type="text/css">
       <![CDATA[
       rect.haupt
       {
         fill: #FFC;
         stroke: #000;
         stroke-width: 2px;
       }
text
        {
         font-family="SimSun"
        }
加在这里就可以拉,随便一个对文档声明定义的地方就可以



我试过了,还是不行啊!请赐教!
--  作者:wisd0m
--  发布时间:8/31/2004 1:40:00 PM

--  
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
  <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
]>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  onload="getSVGDoc(evt);createMenues()">  
  
  <title>SVG-菜单演示程序</title>
  <desc>SVG-Spezifikation in Beispielen</desc>
  
  <defs>
    <style type="text/css">
      <![CDATA[
      rect.haupt
      {
        fill: #FFC;
        stroke: #000;
        stroke-width: 2px;
      }
     text
       {
        font-family="Simsun"
       }
      rect.unter
      {
        fill: #EEF;
        stroke: #000;
        stroke-width: 1px;
      }
      text.haupt
      {
        fill: #00C;
        font-size: 12px;
        text-anchor: middle;
        pointer-events: none;
      }
      text.unter
      {
        fill: #000;
        font-size: 11px;
        text-anchor: middle;
        pointer-events: none;
      }
      a text.unter
      {
        fill: #F00;
        pointer-events: inherit;
      }

       
      ]]>
    </style>
    <script type="text/javascript">
      <![CDATA[
      var svgdoc,svgroot;

   
      function getSVGDoc(load_evt)
      {
        svgdoc=load_evt.target.ownerDocument;
        svgroot=svgdoc.documentElement;
      }
      function createMenues()
      {
        var menues,hlinks,target,menue_x,menue_y,menue_b,menue_h,haupt_out,haupt_over,unter_out,unter_over,dx,dy;
        var haupt_g,haupt_r,haupt_t,haupt_txt,haupt_s1,haupt_s2,haupt_s3,haupt_s4;
        var unter_g,unter_r,unter_t,unter_txt,unter_s1,unter_s2,unter_s3,unter_s4,unter_s5,unter_s6,unter_a;
        // Arrays fuer die Menuepunkte und die Links
        menues=new Array();
        hlinks=new Array();

        // Vorgaben fuer Positionen und Farben - Anfang
          menue_x=20;        // Menue x (erstes Rechteck)
          menue_y=60;        // Menue y (erstes Rechteck)
          menue_b=100;       // Breite der Rechtecke fuer Haupt- und Untermenues
          menue_h=20;        // Hoehe der Rechtecke fuer Haupt- und Untermenues
          haupt_out="#FFC";  // Mouseout-Farbe der Hauptmenuepunkte (=Grundfarbe, siehe CSS-Klasse rect.haupt)
          haupt_over="#FF0"; // Mouseover-Farbe der Hauptmenuepunkte
          unter_out="#EEF";  // Mouseout-Farbe der Untermenuepunkte (=Grundfarbe, siehe CSS-Klasse rect.unter)
          unter_over="#CFC"; // Mouseover-Farbe der Untermenuepunkte
          dx=50;             // x-Versatz der Menuetexte
          dy=15;             // y-Versatz der Menuetexte
          target="_top";     // Linkziel
        // Schema:
        // menues[0 bis n-1]=new Array("Hauptmenuetext","Untermenuetext_1",...,"Untermenuetext_n");
        // Hier: 3 Hauptmenuepunkte mit 5/3/1 Untermenuepunkten
        // hlinks[0 bis n-1]=new Array("url_1",...,"url_n");
        // wenn kein Link erscheinen soll, einen Leerstring "" angeben
        // Hier: im 1. Untermenue ist Menuepunkt 4, im 2. Untermenue Menuepunkt 1 verlinkt
           menues[0]=new Array("Main","Untermenü 1.1","Untermenü 1.2","Untermenü 1.3","Untermenü 1.4","Untermenü 1.5");
           hlinks[0]=new Array("","","","http://www.163.com","");
           menues[1]=new Array("公司简介","公司历史","产品简介","发展蓝图");
           hlinks[1]=new Array("http://www.history.com","","");
           menues[2]=new Array("customer","客户");
           hlinks[2]=new Array("");
        // Menuetexte der n Menues und URLs der n Links festlegen - Ende
        // Menuestruktur dynamisch aufbauen - Anfang
        for(i=0;i<menues.length;i++)
        {
          // Hauptmenues mit Eintraegen erzeugen - Anfang
          haupt_g=svgdoc.createElement("g");
          haupt_g.setAttribute("id","men"+parseInt(i+1));
          haupt_r=svgdoc.createElement("rect");
          haupt_r.setAttribute("x",menue_x+i*menue_b);
          haupt_r.setAttribute("y",menue_y);
          haupt_r.setAttribute("width",menue_b);
          haupt_r.setAttribute("height",menue_h);
          haupt_r.setAttribute("class","haupt");
          haupt_s1=svgdoc.createElement("set");
          haupt_s1.setAttribute("attributeName","fill");
          haupt_s1.setAttribute("attributeType","CSS");
          haupt_s1.setAttribute("to",haupt_over);
          haupt_s1.setAttribute("begin","mouseover");
          haupt_s2=svgdoc.createElement("set");
          haupt_s2.setAttribute("attributeName","fill");
          haupt_s2.setAttribute("attributeType","CSS");
          haupt_s2.setAttribute("to",haupt_over);
          haupt_s2.setAttribute("begin","umen"+parseInt(i+1)+".mouseover");
          haupt_s3=svgdoc.createElement("set");
          haupt_s3.setAttribute("attributeName","fill");
          haupt_s3.setAttribute("attributeType","CSS");
          haupt_s3.setAttribute("to",haupt_out);
          haupt_s3.setAttribute("begin","mouseout");
          haupt_s4=svgdoc.createElement("set");
          haupt_s4.setAttribute("attributeName","fill");
          haupt_s4.setAttribute("attributeType","CSS");
          haupt_s4.setAttribute("to",haupt_out);
          haupt_s4.setAttribute("begin","umen"+parseInt(i+1)+".mouseout");
          haupt_t=svgdoc.createElement("text");
          haupt_t.setAttribute("x",menue_x+i*menue_b+dx);
          haupt_t.setAttribute("y",menue_y+dy);
          haupt_t.setAttribute("class","haupt");
          haupt_txt=svgdoc.createTextNode(menues[i][0]);
          haupt_r.appendChild(haupt_s1);
          haupt_r.appendChild(haupt_s2);
          haupt_r.appendChild(haupt_s3);
          haupt_r.appendChild(haupt_s4);
          haupt_t.appendChild(haupt_txt);
          haupt_g.appendChild(haupt_r);
          haupt_g.appendChild(haupt_t);
          // Hauptmenues mit Eintraegen erzeugen - Ende
          // Gruppe fuer die Untermenuepunkte des i-ten Hauptmenues - Anfang
          unter_g=svgdoc.createElement("g");
          unter_g.setAttribute("id","umen"+parseInt(i+1));
          unter_g.setAttribute("style","display: none");
          unter_s1=svgdoc.createElement("set");
          unter_s1.setAttribute("attributeName","display");
          unter_s1.setAttribute("attributeType","CSS");
          unter_s1.setAttribute("to","block");
          unter_s1.setAttribute("begin","men"+parseInt(i+1)+".mouseover");
          unter_s2=svgdoc.createElement("set");
          unter_s2.setAttribute("attributeName","display");
          unter_s2.setAttribute("attributeType","CSS");
          unter_s2.setAttribute("to","none");
          unter_s2.setAttribute("begin","men"+parseInt(i+1)+".mouseout");
          // Gruppe fuer die Untermenuepunkte des i-ten Hauptmenues - Ende
          // Untermenuepunkte fuer das i-te Hauptmenue - Anfang
          for(j=1;j<menues[i].length;j++)
          {
            unter_r=svgdoc.createElement("rect");
            unter_r.setAttribute("x",menue_x+i*menue_b);
            unter_r.setAttribute("y",menue_y+j*menue_h);
            unter_r.setAttribute("width",menue_b);
            unter_r.setAttribute("height",menue_h);
            unter_r.setAttribute("class","unter");
            if(hlinks[i][j-1]=="")unter_r.setAttribute("onclick","MenueAktion('"+parseInt(i+1)+"."+j+"')");
            unter_s3=svgdoc.createElement("set");
            unter_s3.setAttribute("attributeName","fill");
            unter_s3.setAttribute("attributeType","CSS");
            unter_s3.setAttribute("to",unter_over);
            unter_s3.setAttribute("begin","mouseover");
            unter_s4=svgdoc.createElement("set");
            unter_s4.setAttribute("attributeName","fill");
            unter_s4.setAttribute("attributeType","CSS");
            unter_s4.setAttribute("to",unter_out);
            unter_s4.setAttribute("begin","mouseout");
            unter_s5=svgdoc.createElement("set");
            unter_s5.setAttribute("attributeName","fill");
            unter_s5.setAttribute("attributeType","CSS");
            unter_s5.setAttribute("to",unter_over);
            unter_s5.setAttribute("begin","link"+i.toString()+j.toString()+".mouseover");
            unter_s6=svgdoc.createElement("set");
            unter_s6.setAttribute("attributeName","fill");
            unter_s6.setAttribute("attributeType","CSS");
            unter_s6.setAttribute("to",unter_out);
            unter_s6.setAttribute("begin","link"+i.toString()+j.toString()+".mouseout");
          
            unter_t=svgdoc.createElement("text");
            unter_t.setAttribute("x",menue_x+i*menue_b+dx);
            unter_t.setAttribute("y",menue_y+j*menue_h+dy);
            unter_t.setAttribute("class","unter");
            unter_txt=svgdoc.createTextNode(menues[i][j]);
            unter_a=svgdoc.createElement("a");
            unter_a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",hlinks[i][j-1]);
            unter_a.setAttribute("target",target);
            unter_a.setAttribute("id","link"+i.toString()+j.toString());
            unter_a.appendChild(unter_t);
            unter_r.appendChild(unter_s3);
            unter_r.appendChild(unter_s4);
            unter_r.appendChild(unter_s5);
            unter_r.appendChild(unter_s6);
            unter_t.appendChild(unter_txt);
            
            unter_g.appendChild(unter_s1);
            unter_g.appendChild(unter_s2);
            unter_g.appendChild(unter_r);
            if(hlinks[i][j-1])unter_g.appendChild(unter_a);
            else unter_g.appendChild(unter_t);
            haupt_g.appendChild(unter_g);
          }
          // Untermenuepunkte fuer das i-te Hauptmenue - Ende
          // Hauptmenue mit Untermenues in den DOM-Baum einhaengen
          svgroot.appendChild(haupt_g);
        }
        // Menuestruktur dynamisch aufbauen - Ende
      }
      function MenueAktion(men)
      {
        alert("Menüpunkt "+men+" wurde geklickt.");
      }
      ]]>
    </script>
  </defs>
  <text style="fill:red;" font-size="32" font-family="SimSun" x="350" y="50" width="200" height="30">
    欢迎光临本站</text>
</svg>


--  作者:卷积内核
--  发布时间:8/31/2004 1:54:00 PM

--  
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
  <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
]>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  onload="getSVGDoc(evt);createMenues()">  
  
  <title>SVG-菜单演示程序</title>
  <desc>SVG-Spezifikation in Beispielen</desc>
  <defs>
    <style type="text/css">
      <![CDATA[

      text
      {
      font-family:SimSun
      }
      rect.haupt
      {
        fill: #FFC;
        stroke: #000;
        stroke-width: 2px;

      }
      rect.unter
      {
        fill: #EEF;
        stroke: #000;
        stroke-width: 1px;
      }
      text.haupt
      {
        fill: #00C;
        font-size: 12px;
        text-anchor: middle;
        pointer-events: none;
      }
      text.unter
      {
        fill: #000;
        font-size: 11px;
        text-anchor: middle;
        pointer-events: none;
      }
      a text.unter
      {
        fill: #F00;
        pointer-events: inherit;
      }
      ]]>
    </style>
    <script type="text/javascript">
      <![CDATA[
      var svgdoc,svgroot;
   
      function getSVGDoc(load_evt)
      {
        svgdoc=load_evt.target.ownerDocument;
        svgroot=svgdoc.documentElement;
      }
      function createMenues()
      {
        var menues,hlinks,target,menue_x,menue_y,menue_b,menue_h,haupt_out,haupt_over,unter_out,unter_over,dx,dy;
        var haupt_g,haupt_r,haupt_t,haupt_txt,haupt_s1,haupt_s2,haupt_s3,haupt_s4;
        var unter_g,unter_r,unter_t,unter_txt,unter_s1,unter_s2,unter_s3,unter_s4,unter_s5,unter_s6,unter_a;
        // Arrays fuer die Menuepunkte und die Links
        menues=new Array();
        hlinks=new Array();
        // Vorgaben fuer Positionen und Farben - Anfang
          menue_x=20;        // Menue x (erstes Rechteck)
          menue_y=60;        // Menue y (erstes Rechteck)
          menue_b=100;       // Breite der Rechtecke fuer Haupt- und Untermenues
          menue_h=20;        // Hoehe der Rechtecke fuer Haupt- und Untermenues
          haupt_out="#FFC";  // Mouseout-Farbe der Hauptmenuepunkte (=Grundfarbe, siehe CSS-Klasse rect.haupt)
          haupt_over="#FF0"; // Mouseover-Farbe der Hauptmenuepunkte
          unter_out="#EEF";  // Mouseout-Farbe der Untermenuepunkte (=Grundfarbe, siehe CSS-Klasse rect.unter)
          unter_over="#CFC"; // Mouseover-Farbe der Untermenuepunkte
          dx=50;             // x-Versatz der Menuetexte
          dy=15;             // y-Versatz der Menuetexte
          target="_top";     // Linkziel
        // Schema:
        // menues[0 bis n-1]=new Array("Hauptmenuetext","Untermenuetext_1",...,"Untermenuetext_n");
        // Hier: 3 Hauptmenuepunkte mit 5/3/1 Untermenuepunkten
        // hlinks[0 bis n-1]=new Array("url_1",...,"url_n");
        // wenn kein Link erscheinen soll, einen Leerstring "" angeben
        // Hier: im 1. Untermenue ist Menuepunkt 4, im 2. Untermenue Menuepunkt 1 verlinkt
           menues[0]=new Array("Main","Untermenü 1.1","Untermenü 1.2","Untermenü 1.3","Untermenü 1.4","Untermenü 1.5");
           hlinks[0]=new Array("","","","http://www.163.com","");
           menues[1]=new Array("公司简介","公司历史","产品简介","发展蓝图");
           hlinks[1]=new Array("http://www.history.com","","");
           menues[2]=new Array("客户","客户服务中心");
           hlinks[2]=new Array("http://free.cnyys.com/my/freebird/index.asp");
        // Menuetexte der n Menues und URLs der n Links festlegen - Ende
        // Menuestruktur dynamisch aufbauen - Anfang
        for(i=0;i<menues.length;i++)
        {
          // Hauptmenues mit Eintraegen erzeugen - Anfang
          haupt_g=svgdoc.createElement("g");
          haupt_g.setAttribute("id","men"+parseInt(i+1));
          haupt_r=svgdoc.createElement("rect");
          haupt_r.setAttribute("x",menue_x+i*menue_b);
          haupt_r.setAttribute("y",menue_y);
          haupt_r.setAttribute("width",menue_b);
          haupt_r.setAttribute("height",menue_h);
          haupt_r.setAttribute("class","haupt");
          haupt_s1=svgdoc.createElement("set");
          haupt_s1.setAttribute("attributeName","fill");
          haupt_s1.setAttribute("attributeType","CSS");
          haupt_s1.setAttribute("to",haupt_over);
          haupt_s1.setAttribute("begin","mouseover");
          haupt_s2=svgdoc.createElement("set");
          haupt_s2.setAttribute("attributeName","fill");
          haupt_s2.setAttribute("attributeType","CSS");
          haupt_s2.setAttribute("to",haupt_over);
          haupt_s2.setAttribute("begin","umen"+parseInt(i+1)+".mouseover");
          haupt_s3=svgdoc.createElement("set");
          haupt_s3.setAttribute("attributeName","fill");
          haupt_s3.setAttribute("attributeType","CSS");
          haupt_s3.setAttribute("to",haupt_out);
          haupt_s3.setAttribute("begin","mouseout");
          haupt_s4=svgdoc.createElement("set");
          haupt_s4.setAttribute("attributeName","fill");
          haupt_s4.setAttribute("attributeType","CSS");
          haupt_s4.setAttribute("to",haupt_out);
          haupt_s4.setAttribute("begin","umen"+parseInt(i+1)+".mouseout");
          haupt_t=svgdoc.createElement("text");
          haupt_t.setAttribute("x",menue_x+i*menue_b+dx);
          haupt_t.setAttribute("y",menue_y+dy);
          haupt_t.setAttribute("class","haupt");
          haupt_txt=svgdoc.createTextNode(menues[i][0]);
          haupt_r.appendChild(haupt_s1);
          haupt_r.appendChild(haupt_s2);
          haupt_r.appendChild(haupt_s3);
          haupt_r.appendChild(haupt_s4);
          haupt_t.appendChild(haupt_txt);
          haupt_g.appendChild(haupt_r);
          haupt_g.appendChild(haupt_t);
          // Hauptmenues mit Eintraegen erzeugen - Ende
          // Gruppe fuer die Untermenuepunkte des i-ten Hauptmenues - Anfang
          unter_g=svgdoc.createElement("g");
          unter_g.setAttribute("id","umen"+parseInt(i+1));
          unter_g.setAttribute("style","display: none");
          unter_s1=svgdoc.createElement("set");
          unter_s1.setAttribute("attributeName","display");
          unter_s1.setAttribute("attributeType","CSS");
          unter_s1.setAttribute("to","block");
          unter_s1.setAttribute("begin","men"+parseInt(i+1)+".mouseover");
          unter_s2=svgdoc.createElement("set");
          unter_s2.setAttribute("attributeName","display");
          unter_s2.setAttribute("attributeType","CSS");
          unter_s2.setAttribute("to","none");
          unter_s2.setAttribute("begin","men"+parseInt(i+1)+".mouseout");
          // Gruppe fuer die Untermenuepunkte des i-ten Hauptmenues - Ende
          // Untermenuepunkte fuer das i-te Hauptmenue - Anfang
          for(j=1;j<menues[i].length;j++)
          {
            unter_r=svgdoc.createElement("rect");
            unter_r.setAttribute("x",menue_x+i*menue_b);
            unter_r.setAttribute("y",menue_y+j*menue_h);
            unter_r.setAttribute("width",menue_b);
            unter_r.setAttribute("height",menue_h);
            unter_r.setAttribute("class","unter");
            if(hlinks[i][j-1]=="")unter_r.setAttribute("onclick","MenueAktion('"+parseInt(i+1)+"."+j+"')");
            unter_s3=svgdoc.createElement("set");
            unter_s3.setAttribute("attributeName","fill");
            unter_s3.setAttribute("attributeType","CSS");
            unter_s3.setAttribute("to",unter_over);
            unter_s3.setAttribute("begin","mouseover");
            unter_s4=svgdoc.createElement("set");
            unter_s4.setAttribute("attributeName","fill");
            unter_s4.setAttribute("attributeType","CSS");
            unter_s4.setAttribute("to",unter_out);
            unter_s4.setAttribute("begin","mouseout");
            unter_s5=svgdoc.createElement("set");
            unter_s5.setAttribute("attributeName","fill");
            unter_s5.setAttribute("attributeType","CSS");
            unter_s5.setAttribute("to",unter_over);
            unter_s5.setAttribute("begin","link"+i.toString()+j.toString()+".mouseover");
            unter_s6=svgdoc.createElement("set");
            unter_s6.setAttribute("attributeName","fill");
            unter_s6.setAttribute("attributeType","CSS");
            unter_s6.setAttribute("to",unter_out);
            unter_s6.setAttribute("begin","link"+i.toString()+j.toString()+".mouseout");
          
            unter_t=svgdoc.createElement("text");
            unter_t.setAttribute("x",menue_x+i*menue_b+dx);
            unter_t.setAttribute("y",menue_y+j*menue_h+dy);
            unter_t.setAttribute("class","unter");
            unter_txt=svgdoc.createTextNode(menues[i][j]);
            unter_a=svgdoc.createElement("a");
            unter_a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",hlinks[i][j-1]);
            unter_a.setAttribute("target",target);
            unter_a.setAttribute("id","link"+i.toString()+j.toString());
            unter_a.appendChild(unter_t);
            unter_r.appendChild(unter_s3);
            unter_r.appendChild(unter_s4);
            unter_r.appendChild(unter_s5);
            unter_r.appendChild(unter_s6);
            unter_t.appendChild(unter_txt);
            
            unter_g.appendChild(unter_s1);
            unter_g.appendChild(unter_s2);
            unter_g.appendChild(unter_r);
            if(hlinks[i][j-1])unter_g.appendChild(unter_a);
            else unter_g.appendChild(unter_t);
            haupt_g.appendChild(unter_g);
          }
          // Untermenuepunkte fuer das i-te Hauptmenue - Ende
          // Hauptmenue mit Untermenues in den DOM-Baum einhaengen
          svgroot.appendChild(haupt_g);
        }
        // Menuestruktur dynamisch aufbauen - Ende
      }
      function MenueAktion(men)
      {
        alert("Menüpunkt "+men+" wurde geklickt.");
      }
      ]]>
    </script>
  </defs>
  <text style="fill:red;" font-size="32" font-family="SimSun" x="350" y="50" width="200" height="30">
    欢迎光临本站</text>
</svg>


--  作者:卷积内核
--  发布时间:8/31/2004 1:56:00 PM

--  [分享]
好了吧?

--  作者:wisd0m
--  发布时间:8/31/2004 4:01:00 PM

--  
我知道哪里出问题了,谢谢斑竹
--  作者:SCYANGYU
--  发布时间:2/18/2005 11:12:00 AM

--  
经典,收藏了!

谢谢 “卷积内核” 老大。


--  作者:wulemale
--  发布时间:5/30/2005 10:20:00 PM

--  
汉字作为实参传递给function时还是有问题啊,如用myobj.setData("***"),就不能正常显示
---------
解决了,是我自己tiptext属性中的font-family忘改了


[此贴子已经被作者于2005-6-2 13:09:59编辑过]

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