簡體   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