【发布时间】:2015-08-28 20:49:45
【问题描述】:
问题
在我的代码中 MySymbolsObject.js - 内联报告的代码仅用于示例目的 - 设置 window.onload 事件以便 Snap.load() 一个 svg 文件并将 svg 片段节点保存在 Symbols.resources
最后一个内联<script> 设置了第二个window.onload 事件,其中包含使用保存在Symbols.resources 中的svg 节点的代码
在 Firefox 中,它可以完美地在控制台中打印节点,而在 Safari 中,Symbols.resources 在控制台中打印为其原始值 0。
我检查了
在 Safari 控制台中,页面完全加载后,
Symbols.resources包含该节点。两个浏览器都遵循两个
onload events的预期执行顺序。
我的猜测是Snap.load() 是异步运行的,所以它在不同的浏览器中有不可预测的行为。
在 Safari 中如何解决?
<html>
<head>
<script type="text/javascript" src="snap.svg-min.js"></script>
<script type="text/javascript" src="MySymbolsObject.js">
setEvent( window, 'load', function(){
Snap.load( 'pathToFile.svg', function( svgFrag ){
Symbols.resources = svgFrag;
});
});
Symbols = {
resources : 0,
...
}
</script>
<script type="text/javascript">
onload = function (){
console.log( Symbols.resources )
}
</script>
</head>
<body> ... </body>
</html>
【问题讨论】:
-
这个相关问题可能会有所帮助:What does a script-Tag with src AND content mean?
-
谢谢@Roberto,其实第二个script-Tag 没有内容,我放这里只是为了展示MySymbolsObject.js 的代码以作示例。
标签: javascript svg safari snap.svg