Проблема с загрузкой простой, допустимой страницы через jquery load() в IE — «E.location.protocol равен нулю или не является объектом».

#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 — все, что я пробовал, было болезненным. Действительно, если бы я выпустил продукт, подобный тому, что они делают — боже, помоги мне, я бы умер с голоду.