ПРОБЛЕМАSnap.load() Функция обратного вызова срабатывает слишком поздно в Safari
В моем коде MySymbolsObject.js - код сообщается инлайн только для примера - установить window.onload
событие для того, чтобы Snap.load()
файл SVG и сохранить узел фрагмента ГСВ в Symbols.resources
последний инлайн <script>
установлен второй window.onload
событий, содержащий код, который использует узел SVG, сохраненный в Symbols.resources
В Firefox работает безупречная печать узла в консоли, в Safari Symbols.resources
печатается как исходное значение 0 в консоли.
I ПРОВЕРЕНО
в консоли 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>
Этот связанный с этим вопрос может помочь: [Что делает скрипт-Tag с СРК И содержанием в виду?] (Http://stackoverflow.com/questions/6528325/what-does-a-script-tag-with -src-and-content-mean) – Roberto
Спасибо @Roberto, на самом деле второй скрипт-тег не имеет контента, я здесь просто показываю код _MySymbolsObject.js_ для примера. –