Я использую jQuery, который отлично работает во всех браузерах, кроме как в Internet Explorer 8 (и, вероятно, не в более ранних версиях, хотя я не так обеспокоен о них.). Я использую функцию .each jQuery, чтобы перебирать каждый элемент в массиве JavaScript, который автоматически создается на моей странице с помощью довольно негибкой CMS, которую я использую.Javascript в Internet Explorer: как сделать что-то после того, как переменная загружена/зарегистрирована
Например, мой CMS записывает этот массив объектов изображения в JavaScript на моей странице:
paths = [];
paths[0] = new Image();
paths[0].src = "/path/to/image1"
paths[1] = new Image();
paths[1].src = "/path/to/image2"
paths[2] = new Image();
paths[2].src = "/path/to/image3"
paths[3] = new Image();
paths[3].src = "/path/to/image4"
Я тогда я использую JQuery каждой функции в цикле над этим массивом и возвращает все изображения в миленькой неупорядоченный список ,
Проблема заключается в том, что при использовании
$(document).ready(function() { ... });
работает отлично Jquery в в FF/Safari/Chrome и т.д., и фактически в состоянии немедленно оказать мой неупорядоченный список довольно много, Internet Explorer, кажется, запустить свой document.ready перед тем, как он зарегистрирует, что массив «путей» существует в JavaScript (хотя этот jQuery включен после кода для массива изображений). Я знаю это, потому что в IE я выбрал ошибку «paths is null/undefined».
Когда я изменил его от
$(document).ready(function() {
в
$(window).load(function() {
мой код работал, как это должно быть в IE, потому что он только выполняет свою JQuery «каждый» функцию после загрузки всей страницы (который отстой, потому что он замедляет время рендеринга и вызывает «отставание» в том, что я пытаюсь сделать ... но эй, если он работает). Однако при появлении этого IE иногда по-прежнему срабатывает моя каждая функция при использовании $ (window) .load, прежде чем он зарегистрирует, что массив с именем «пути» существует, если веб-сайт был кэширован.
Кто-нибудь знает верный способ оплаты, чтобы переменная path была зарегистрирована IE немедленно, поэтому каждая моя функция не сработает?
Какая версия IE? – jcolebrand
IE8, я отредактирую вопрос, чтобы упомянуть об этом .. Спасибо! – flight643
Просто любопытно ... меняет 'paths = [];' на 'var paths = [];' делает разницу? –