这是my site,它适用于Firefox,但是,在使用chrome或opera访问它时,'相框'没出现。
我故意将父<svg>
元素的高度设置为0%<svg height="0% onload="init()"...>
,然后,在加载所有svg DOM结构后,我将其设置为100%高度
function init(){
mySvg=Snap("#mySvg");
//....a lot of elements initializations
mySvg.attr({height:"100%"});
}
由于&#39;相框&#39;没有显示,并且由于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 :(得分:2)
问题来自自我关闭的<script ... />
标记。
Chrome在这里有错误:根据the specs
“SVG和MathML元素,其开始标记具有单个”/“字符 在结束之前“&gt;”据说字符被标记为 自闭“。
SVG脚本元素应该被识别为HTMLSVGElement中的外部元素,因此如果没有内容,则应该允许自闭标记。
要解决此问题,最佳解决方案是始终使用显式结束标记:</script>
。