2015-12-17 2 views
0

Когда я использую следующий кодфункция Javascript нагрузки работает только половину времени (Firefox)

<object id="svg" data="assets/mySVG.svg" type="image/svg+xml"> 

<script> 
$(document).ready(function() { 
    document.getElementById('svg').addEventListener("load", function() { 
     console.log('test'); 
    }); 
}); 
</script> 

Он будет загружать только половину времени. Иногда, когда я его обновляю, иногда это не так. Как только документ SVG кэшируется, он всегда загружается. Это происходит только в firefox, в хром он загружается в 100% случаев.

+0

, когда он не загружается, вы получаете сообщение об ошибке в консоли разработчика? –

+0

Возможно, убедитесь, что вся страница загрузилась и перед запуском скрипта. – Ian

+0

Нет ошибок, также я проверяю, загружена ли вся страница перед запуском скрипта (как раз сделал небольшой фрагмент в качестве примера), я отредактирую, чтобы избежать конфуции. – inControl

ответ

1

Возможно, проблема может быть проблемой кэша, также помните, что событие Load происходит после того, как DOM готов, и, вероятно, объект SVG загружается до того, как он находится в кеше, как только вы можете попробовать его загрузить без использования jQuery, как я прочитал до того, как событие JQuery ready занимает больше времени, чтобы начать, потому что, сначала JQuery библиотеки необходимо загрузить и, вероятно, SVG уже загружен, когда происходит ready событие, добавить сценарий, как это, перед </body>:

<script> 
(function() { 
    "use strict"; 
    var init(); 
    init = function(){ 
     document.getElementById('svg').addEventListener("load", function() { 
      console.log('test'); 
     }); 
    } 
    init(); 
})(); 
</script> 
+1

Это произошло потому, что svg был загружен до того, как документ был готов при кэшировании. – inControl

+0

Рад помочь вам! –