我试图在基于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的样式。
答案 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的移动浏览器。