[英]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.gfx , dojox.gfx.svg和dojox.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()調用,將為如何包裝每個模塊提供一個思路。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.