首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在具有跨浏览器支持的自定义Dojo构建中包括dojox.gfx.SVG和dojox.gfx.VML?

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

Stack Overflow用户
提问于 2009-10-13 08:14:55
回答 2查看 2.3K关注 0票数 0

我正在使用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不支持属性或方法“:

代码语言:javascript
复制
*s.rawNode = _createElementNS(svg.xmlns.svg, "svg");*

_createElementNS被注释为“内部助手来处理创建命名空间的元素,主要是让SVG在IE上工作”。

当然,我将SVG和VML都排除在我的中,剩下的让dojo xhrGet来完成。这是可行的,但还需要三个请求(svg.js、shape.js、path.js,尽管我的构建中包含了后两个请求)。

我需要在我的构建中包括什么,才能使向量形状在所有浏览器中“开箱即用”?

这是我的构建概要文件,它可以工作,但需要额外的三个请求(因此没有显式地包含svg和vml ):

代码语言:javascript
复制
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" ],
]

};

谢谢你的回答。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-14 20:10:01

不幸的是,假设在运行时提取了正确的呈现器(svg或vml),则构建dojox.gfx代码。所以,你所拥有的构建只是吸引了顶级的dojox.gfx,这是可行的方法。

您可能会破解代码,在svg的dojox.gfx.renderer文件周围放置if( == "svg"){}。查看dojox.gfx源代码和底部的dojo.requireIf()调用可能会给出如何包装每个模块的想法。

票数 4
EN

Stack Overflow用户

发布于 2009-12-08 23:40:28

你试过把:

代码语言:javascript
复制
gfxRenderer:'svg,silverlight,vml'

在你的djcongfig设置中?

dojox.gfx关于dojocampus的文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1558841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档