Событие проводки document.ready: IE ведет себя по-другому - PullRequest
1 голос
/ 22 ноября 2011

Я привык набирать: $(function(){}); синтаксис, чтобы связывать события и делать другие вещи в document ready событии.Но я заметил, что IE8 создавал проблемы с вызовом функций из некоторых включенных js-файлов.Я бы не смог взломать его, если бы на странице не было кода от дизайнера (он выложил какое-то слайд-шоу: D).Код для слайд-шоу использовал старый синтаксис $(document).ready(function(){});, и он работал.Я удалил свой код и поместил его с кодом инициализации слайд-шоу, и все стало работать.

Я не могу понять это странное поведение, но хочу убедиться, что эта ошибка не укусила меня снова.Включенные файлы загружаются после ready событий?

РЕДАКТИРОВАТЬ:

<script src="jquery.js" type="text/javascript"></script>
<script src="custom.js" type="text/javascript"></script>

$(function(){
    myCustomFunction(); ///THIS IS CAUSING EXCEPTION IN IE 8
});


$(document).ready(function(){
    myCustomFunction(); ///THIS IS WORKS IN IE 8
});

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Событие ready срабатывает только после завершения загрузки всех включенных файлов, вот для чего оно.

Я также сталкивался с подобной проблемой и раньше, но это было из-за того, что мои теги скриптов не закрывались должным образом, посмотрите здесь: Как работает $ (document) .ready () в IE 8?

0 голосов
/ 22 ноября 2011

Проблемы могут быть вызваны тем, что JQuery еще не был загружен, попробуйте выполнить следующий код перед тестированием кода $ (document) .ready:

if (jQuery) alert('jquery loaded')
else alert('jquery not loaded')

У нас была похожая проблема с совместимостью браузера, не помню, был ли это IE8. Это было вызвано атрибутом type типа тегов скрипта.

У нас были некоторые надписи «text / javascript» ( рекомендация W3C ), «application / javascript», а некоторые без атрибута type. JQuery был в верхней части заголовка с надписью 'text / javascript', но по-прежнему загружался последним.

Эту проблему легко решить, поместив один и тот же ContentType во все теги скрипта

...