dojo和显示内联SVG

时间:2010-02-19 14:01:41

标签: firefox dojo google-chrome svg

我试图在基于dojo的应用程序中内联显示动态创建的SVG,但遇到了一些困难。

当我直接导航到SVG时,它在Firefox 3.5 / 3.6和Chrome中渲染得很好,但是当我内联它,验证我有正确的DOCTYPE和XML命名空间时,Firefox和Chrome都显示了一堆SVG中的文本。然后我尝试更改我提供的内容类型以强制它为application/xhtml+xml但是当强制进入XHTML有效模式时,Firefox和Chrome都拒绝授予dojo访问DOM中所需的所有内容以使其工作

我的文件的开头是:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
  xmlns:svg="http://www.w3.org/2000/svg"
  xmlns:v="urn:schemas-microsoft-com:vml"
  xmlns:xlink="http://www.w3.org/1999/xlink">

我的内联SVG以:

开头
<svg xmlns="http://www.w3.org/2000/svg" width="480" height="1394">

我还尝试通过<img>代码单独显示SVG支架,这似乎在Chrome中运行良好,但Firefox 3.5 / 3.6拒绝在dijit.ContentPane中显示SVG,尽管直接导航到文档显示图片。为此我用过:

<img src="test_svg.php" />

我的独立文档以:

开头
<?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.dtd">
<svg xmlns:svg="http://www.w3.org/2000/svg" 
  xmlns="http://www.w3.org/2000/svg" 
  version="1.0" width="480" height="1394">

我设置了以下标题:

Content-Type: image/svg+xml

我会使用dojox.gfx但我有相当多的服务器端代码来生成SVG,我不会太热衷于尝试翻译为dojox.gfx而且我很确定我在dojox.gfx下不容易支持我使用SVG的样式。

1 个答案:

答案 0 :(得分:2)

只需使用<embed>

<embed src="generated.svg" width="500" height="500">

顺便说一下,这种方法甚至在SVG Primer中提到过。检查它是否适合您很容易:http://srufaculty.sru.edu/david.dailey/svg/simplescript.html - 直接从SVG Primer中获取。如果你能看到一个四分之一圆就可以了。

当然,沿着这条路线,您将应用程序绑定到支持SVG的浏览器。没有IE,没有只支持Canvas的移动浏览器。