我正在使用dojo.gfx在我的网站上创建矢量形状和文本,当我是"dojo.require"-ing时,一切都很好。但是,当我在自定义构建中构建所需的一切(特别是dojox.gfx、dojox.gfx.svg和dojox.gfx.vml)时,Dojo对于支持SVG的浏览器和IEs (VML)的自动区分似乎正在崩溃。
如果我只包含dojox.gfx.svg,IE中断(见下面),如果我添加了dojox.gfx.vml,我的脚本就会停止在火狐中工作。
在IE中,脚本中断在我的自定义dojo构建中的以下一行:"Object不支持属性或方法“:
*s.rawNode = _createElementNS(svg.xmlns.svg, "svg");*_createElementNS被注释为“内部助手来处理创建命名空间的元素,主要是让SVG在IE上工作”。
当然,我将SVG和VML都排除在我的中,剩下的让dojo xhrGet来完成。这是可行的,但还需要三个请求(svg.js、shape.js、path.js,尽管我的构建中包含了后两个请求)。
我需要在我的构建中包括什么,才能使向量形状在所有浏览器中“开箱即用”?
这是我的构建概要文件,它可以工作,但需要额外的三个请求(因此没有显式地包含svg和vml ):
dependencies ={
layers: [
{
name: "mybuild-dojo.js",
dependencies: [
"dojo.fx",
"dojox.gfx",
"dojox.gfx.shape",
"dojox.gfx.path",
"dojox.gfx.VectorText",
"dojox.xml.DomParser",
"dojox.image.Lightbox",
"dojo.parser"
]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
]};
谢谢你的回答。
发布于 2009-10-14 20:10:01
不幸的是,假设在运行时提取了正确的呈现器(svg或vml),则构建dojox.gfx代码。所以,你所拥有的构建只是吸引了顶级的dojox.gfx,这是可行的方法。
您可能会破解代码,在svg的dojox.gfx.renderer文件周围放置if( == "svg"){}。查看dojox.gfx源代码和底部的dojo.requireIf()调用可能会给出如何包装每个模块的想法。
发布于 2009-12-08 23:40:28
你试过把:
gfxRenderer:'svg,silverlight,vml'在你的djcongfig设置中?
dojox.gfx关于dojocampus的文章
https://stackoverflow.com/questions/1558841
复制相似问题