jquery (document) .ready () не работает в IE 7+ - PullRequest
0 голосов
/ 02 сентября 2011

Мне кажется, это действительно простая проблема, но, несмотря на поиск всех возможных строк поиска, я не могу найти ответ.

Я использую jquery 1.5.1 и пытаюсь использовать функцию $ (document) .ready () для привязки нескольких событий щелчка при загрузке страницы. В конце концов я сузил проблему до такой маленькой:

$(document).ready(function(){
    alert('hello world');
});

В IE 6,7 и 8 я никогда не вижу предупреждения hello world при загрузке страницы. IE 9 работает, как и FF, Chrome, Safari и т. Д.

Решением такого рода работы было окружение оповещения в 500 мс времени ожидания JS. Кажется, это иногда срабатывает, но определенно недостаточно последовательно.

Единственная возможность, о которой я могу подумать, заключается в том, что, поскольку этот скрипт загружается хорошо внутри тега body страницы HTML, это может привести к путанице в функции ready (). Если это так, я не знаю, каким будет решение.

UPDATE

ОК, после тестирования страницы меньшего размера я могу подготовить документ к работе в IE (хотя никаких предупреждений, я полагаю, это совершенно другая проблема).

Есть ли какие-то странности в отношении IE с точки зрения того, где вы можете загрузить файлы javascript на странице?

Ответы [ 5 ]

1 голос
/ 02 сентября 2011

Что у вас есть в атрибуте type=""?IE очень строг в отношении этого атрибута.Если вы укажете этот атрибут, он должен содержать "text/javascript", иначе IE его проигнорирует.

0 голосов
/ 20 сентября 2011

У меня была эта проблема с IE7, похоже, я использовал

<script type='application/javascript' language='javascript'>
$(document).ready(function() { ... })
</script>

Изменение первого тега сценария на

<script type='text/javascript' language='javascript'>

Кажется, чтобы это работало. Надеюсь, это поможет.

0 голосов
/ 02 сентября 2011

Так что, поиграв с этим, я прихожу к выводу, что браузеры IE, которые я использую в ВМ, виноваты. Сбой кнопок и вызовов ajax для правильной работы кажется случайным и прерывистым независимо от изменений, которые я делаю в javascript. Я думаю, что готовый документ работал все время, и браузеры терпели неудачу по-разному. Кажется, сейчас работает.

0 голосов
/ 02 сентября 2011

Нет причин использовать $(document).ready внутри ТЕЛА страницы. Используйте его, когда ваш тег SCRIPT находится в заголовке страницы, или удалите его и не добавляйте свой тег SCRIPT, пока все необходимые элементы тела не будут закрыты.

0 голосов
/ 02 сентября 2011

Есть ли у вас другие файлы javascript, которые могут конфликтовать с jQuery $?

Провести тест при загрузке страницы,

if (typeof jQuery == 'undefined') {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'js/jquery/1.4.4/jquery.min.js';
        document.getElementsByTagName('head')[0].appendChild(script);
        setTimeout(checkjQuery, 0);
    }
    function checkjQuery() {
        if (typeof jQuery == 'undefined') {
            setTimeout(checkjQuery, 0);
        } else {
            jQuery.noConflict();
        }
    }; 
...