2015-12-26 48 views
1

這是my site,它在Firefox上正常工作,但是,使用chrome或opera訪問它時,「圖片框架」不顯示。內聯SVG:鉻和歌劇無法檢測到外部資源

我特意設置父<svg>元件至0%<svg height="0% onload="init()"...>的高度,然後,所有的SVG DOM結構的加載後,我將其設置爲100%的高度

function init(){ 
    mySvg=Snap("#mySvg"); 
    //....a lot of elements initializations 
    mySvg.attr({height:"100%"}); 
} 

由於對'相框「不顯示,並且由於開發人員控制檯在Chrome和Opera上都顯示此錯誤消息:Uncaught ReferenceError: Snap is not defined,我只是得出結論:資源snap.svg-min.js(快照庫)無法檢測到(我已將它包含在以下此行的標籤<svg>附近:

<script xlink:href="/resources/snap.svg-min.js" type="text/ecmascript"/>

哪一個然後回答這個問題:爲什麼?這在Firefox上運行得很好,Chrome和Opera需要不同的語法才能將外部資源包含到內聯SVG中?

+0

我覺得你可能會有更一致的行爲,如果svg將內聯無論如何保持svg代碼之外的所有js代碼。 – Ian

回答

2

問題來自自動關閉<script ... />標記。

Chrome是越野車在這裏:根據the specs

「SVG和MathML元素,其起始標籤都有一個‘/’字符 結束前‘>’字符都表示要標記爲 自我關閉「。

SVG腳本元素應該在HTMLSVGElement中被識別爲外部元素,因此如果沒有內容,則應該允許自動關閉標記。

要解決這個問題,最好的解決方案是始終使用明確的結束標記:</script>

+0

我應該知道這個!謝謝餘下@Kaiido .... – Rickard