#jquery #internet-explorer #load
#jquery #internet-explorer #загрузить
Вопрос:
Я действительно не уверен, что может быть проще. При нажатии IE отказывается загружать страницу с помощью функции jQuery load(). Это просто выдает мне ошибку «E.location.protocol» равен нулю или не является объектом в самом коде jQuery (1.4.4). Работает в любом другом браузере, конечно.
Я упростил add_image.php чтобы быть очень простой, статической страницей, которую я проверяю как действительную наhttp://validator.w3.org.
У меня есть много других сообщений здесь о проблемах с загрузкой IE, но это не проблема с кэшированием или проблемой проверки.
Итак, я не могу понять, что я здесь делаю не так. Кроме простой попытки закодировать что-то простое для наиболее используемого браузера в мире, не ожидая, что это не будет ужасным, мучительным, разочаровывающим опытом.
$("#add-image-button").click(function(){
$("#dialog").load('/admin_and_tools/forms/add_image.php?time=<?=time()?>');
});
И идеи приветствуются. Я, честно говоря, не уверен, как действовать, если я не могу рассчитывать на то, что в IE произойдет что-то настолько простое, как загрузка страницы ajax.
Комментарии:
1. Я не знаю, почему вы думаете, что это так просто. Вы пытались указать полный, абсолютный URL? Похоже, что IE ищет
http://
. Ваш подход должен быть действительным в его нынешнем виде, но попытка этого, по крайней мере, может помочь сузить проблему.2. pinoytech.org/question/4821080/…
3. Ссылка, которую вы предоставили в pinyotech, также является моим вопросом. Возможно, я могу сделать то же самое, что и в тот раз, а именно изменить код jQuery. Но это кажется немного хакерским.
4. @user399696: Да, это вопрос с ответом. Теперь почему бы не ответить на другие сделанные комментарии?
Ответ №1:
Сгенерирован ли ваш код jQuery на PHP? Если нет, я думаю, <?=time()?>
что URL-адрес не будет работать. Я не знаю, может ли это оскорбить IE, но может возникнуть проблема с передачей <
или >
в URL без их экранирования.
Если вы хотите предотвратить кэширование add_image.php
скрипта, вы можете использовать встроенную опцию jQuery cache
;
("#dialog").load('/admin_and_tools/forms/add_image.php', {
--> cache: false <--
});
Комментарии:
1. Да, код jquery записывается на странице php. В исходном коде view он выглядит нормально и не выдает ошибок. Я полностью удалил его и получил ту же проблему.
Ответ №2:
Попробуйте использовать относительный путь вместо абсолютного пути. Или попробуйте использовать полный URL с протоколом:
http://www.myurl.com
Комментарии:
1. Согласовано. Я думаю, что абсолютный URL, вероятно, требует правильного URI с протоколом и т.д.
2. Спасибо, но, к сожалению, это не имеет никакого эффекта. Я все еще получаю ту же ошибку.
Ответ №3:
Обновите свою версию jQuery.
Проверьте это с помощью этого тега script:
<script src="http://code.jquery.com/jquery-1.5.2.min.js" type="text/javascript"></script>
Комментарии:
1. К сожалению, нет. Хотя спасибо. IE теперь выдает мне ошибку в строке с номером 183748392. Отладчик IE действительно не может быть менее полезным.
Ответ №4:
Спасибо всем за вашу помощь.
Как оказалось, я допустил очень простую ошибку (сюрприз, surprise) и пытался обойти ее в течение нескольких месяцев, не подозревая о реальной причине.
В одном из моих сценариев я повторно объявлял var location как глобальный, уничтожая оригинал. Это только беспокоило IE по какой-либо причине, но это действительно избавляло от этой важной переменной.
В любом случае, спасибо JSLint за то, что помогли мне наконец обнаружить это, и спасибо всем за вашу помощь.
Пожалуйста, прекратите читать здесь, чтобы не слушать еще одну анти-Microsoft разглагольствование:
Я хотел бы добавить, что каждая попытка использования любого вида отладчика в Microsoft, будь то встроенный в IE, загружаемый отладчик скриптов или даже FirebugLite, предназначенный для помощи в отладке javascript в IE, была бесполезной — либо выдавались ложные номера строк, не удавалось найти источник, либо вообще не выдавалось никакой ошибки. Не говоря уже о неуклюжем пользовательском интерфейсе I debugger, графических сбоях, непрерывных перенаправлениях на собственном веб-сайте Microsoft — все, что я пробовал, было болезненным. Действительно, если бы я выпустил продукт, подобный тому, что они делают — боже, помоги мне, я бы умер с голоду.