繁体   English   中英

如何在具有跨浏览器支持的自定义Dojo构建中包括dojox.gfx.SVG和dojox.gfx.VML?

[英]How to include dojox.gfx.SVG and dojox.gfx.VML in a custom Dojo build with cross-browser support?

我正在使用dojo.gfx在我的网站上创建矢量形状和文本,当我“ dojo.require”-使用Javascript中的所有依赖项时,一切工作正常。 但是,当我在自定义版本(尤其是dojox.gfxdojox.gfx.svgdojox.gfx.vml )中构建所需的所有内容时,Dojo对支持SVG的浏览器和IE(VML)的自动区分似乎正在打破。

如果仅包含dojox.gfx.svg,则IE会中断(请参见下文),如果添加dojox.gfx.vml,则脚本将无法在Firefox中运行。

在IE中,脚本在我的自定义dojo构建的以下行中中断,并显示“对象不支持属性或方法”:

*s.rawNode = _createElementNS(svg.xmlns.svg, "svg");*

带有_createElementNS的注释为“内部助手处理创建命名空间的元素。主要是为了使SVG标记输出可在IE上使用。”。

正确的知道,我在我的dojo构建配置文件中同时排除了SVG和VML,而让dojo xhr得到了其余的东西。 这可以工作,但需要三个以上的请求(svg.js,shape.js,path.js,尽管后两个包含在我的构建中)。

为了使Vector形状在所有浏览器中均可使用,我需要在构建中包括什么?

这是我的构建配置文件,可以正常工作,但需要另外三个请求(因此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" ],
]

};

谢谢您的回答。

不幸的是,dojox.gfx代码是在运行时引入正确的渲染器(svg或vml)的情况下构造的。 因此,只需引入顶级dojox.gfx即可构建。

您可能会修改代码,将if(dojox.gfx.renderer ==“ svg”){}放在svg的dojox.gfx文件周围。 大概看一下dojox.gfx源代码和底部的dojo.requireIf()调用,将为如何包装每个模块提供一个思路。

您是否尝试过:

gfxRenderer:'svg,silverlight,vml'

在您的djcongfig设置中?

dojocampus上的dojox.gfx文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM