ie и ajax

112 views
Skip to first unread message

B@RT

unread,
Nov 27, 2011, 1:09:58 PM11/27/11
to RightJS Для Бородатых Хакеров
Не могу никак добиться нормальной работы ajax запросов в IE.
Библиотека на странице подключена в safe режиме (потому как основной
фреймворк - mootools, так исторически сложилось и ajax запрос нужно
делать именно из rightjs).
Запрос делается на свой же ресурс (т.е. доменное имя совпадает), но ie
упорно блокирует обращение: "Строка: 1
Ошибка: Разрешение отклонено"
В firefox, opera и chrome все работает как надо. Этот же запрос через
mootools нормально отрабатывает в ie.
Тестировался ie 7 и 8. Пробовал указывать как полный адрес, так и
index.php?.... (с слешем в начале и без)

Куда копать?

З.Ы. кстати, демка на офф.сайте http://ru.rightjs.org/ui/autocompleter/demo
автокоплитера, там, где работает ajax, выдает ошибку в ie, но судя по
всему, к моему вопросу отношения это не имеет.

B@RT

unread,
Nov 27, 2011, 3:03:29 PM11/27/11
to right...@googlegroups.com
Если закоментировать строки:
  if ('execScript' in win) {
    win.execScript(src);
  } else {

что заставит ие подключить библиотеку как другие браузеры, все начинает нормально работать

Nikolay Nemshilov

unread,
Nov 27, 2011, 4:28:10 PM11/27/11
to right...@googlegroups.com
Стоит посмотреть в сторону content-type ответа с сервера, возможно неправильно указан тип и ИЕ пытается что-то исполнить как яваскрипт или что-то в этом роде.

Можно так же поиграться с опциями evalJS/evalScripts




--
Thanks,
Nikolay

B@RT

unread,
Nov 27, 2011, 4:43:21 PM11/27/11
to right...@googlegroups.com
ну, я проверил на нескольких серверах, везде получал проблемы... :(
сервер отвечает: Content-Typetext/html; charset=utf-8

Nikolay Nemshilov

unread,
Nov 28, 2011, 3:19:40 AM11/28/11
to right...@googlegroups.com
Не имея на руках никаких деталей того что вы пытаетесь сделать, мне сложно сказать что-либо определенное в данном случае. Но я думаю, что врятли это проблема RightJS


--
Thanks,
Nikolay

B@RT

unread,
Nov 29, 2011, 3:23:50 AM11/29/11
to RightJS Для Бородатых Хакеров
Вот пример: http://rghost.ru/32478381
Запускать файл test.html. После нажатия на кнопку, должен подсасаться
файл test2.html через get запрос. В firefox отрабатывает без проблем,
в ie блокируется запрос.

B@RT

unread,
Nov 29, 2011, 4:24:08 AM11/29/11
to RightJS Для Бородатых Хакеров
там в архиве я не тот js положил... или добавьте в папочку right-safe-
src.js, или в test.html поправьте имя скрипта на right-safe.js

ad

unread,
Nov 29, 2011, 4:38:24 AM11/29/11
to RightJS Для Бородатых Хакеров
Все версии IE, ниже девятой -- поддерживаются модулем right-olds.
Его нужно подключать принудительно, либо он должен находиться в одной
папке с ядром.

Подключив только ядро -- ты не получишь полноценной поддержки старых
браузеров.

Nikolay Nemshilov

unread,
Nov 29, 2011, 4:55:46 AM11/29/11
to right...@googlegroups.com
старые ИЕ не работают с локальными файлами через аякс, им нужно чтобы файл лежал где-то на сервере реальным урлом


@ad  safe-mode сборка включает в себя модуль olds. Отдельным файлом он работает только с нормальным билдом


--
Thanks,
Nikolay

ad

unread,
Nov 29, 2011, 5:09:02 AM11/29/11
to RightJS Для Бородатых Хакеров
@Nikolay -- да, блин, пропустил я, что речь о safe-mode, сорри.

B@RT

unread,
Nov 29, 2011, 5:20:58 AM11/29/11
to RightJS Для Бородатых Хакеров
этот тест, который я выложил, тестировался на сервере с реальным
урлом. Указывать, какой файл подгружать пробовал всеми способами (слеш
в начале, полный путь, включая доменное имя и/или протолок). Результат
один - ие блокирет запрос.

Nikolay Nemshilov

unread,
Nov 29, 2011, 5:48:58 AM11/29/11
to right...@googlegroups.com
Покопался, похоже действительно какая-то бага в safe-mod сборке

--
Thanks,
Nikolay

Nikolay Nemshilov

unread,
Nov 29, 2011, 6:10:53 AM11/29/11
to right...@googlegroups.com
Попробуйте билд со скрепки, вроде работает теперь

right-safe-src.js
right-safe.js

B@RT

unread,
Nov 29, 2011, 7:06:03 AM11/29/11
to RightJS Для Бородатых Хакеров
спс, работает

On 29 ноя, 14:10, Nikolay Nemshilov <nemshi...@gmail.com> wrote:
> Попробуйте билд со скрепки, вроде работает теперь
>

>  right-safe-src.js
> 60KПросмотретьЗагрузить
>
>  right-safe.js
> 59KПросмотретьЗагрузить

Nikolay Nemshilov

unread,
Nov 29, 2011, 7:15:07 AM11/29/11
to right...@googlegroups.com
отлично. спасибо что сообщили о проблеме


--
Thanks,
Nikolay

B@RT

unread,
Nov 29, 2011, 7:18:52 AM11/29/11
to RightJS Для Бородатых Хакеров
А ошибку по этому адресу
http://ru.rightjs.org/ui/autocompleter/demo
в ie не разбирали?

Nikolay Nemshilov

unread,
Nov 29, 2011, 7:20:55 AM11/29/11
to right...@googlegroups.com
не помню там ошибки

B@RT

unread,
Nov 29, 2011, 7:22:32 AM11/29/11
to RightJS Для Бородатых Хакеров
ну, я писал в своем первом сообщении:

кстати, демка на офф.сайте http://ru.rightjs.org/ui/autocompleter/demo

автокомплитера, там, где работает ajax, выдает ошибку в IE, но судя по


всему, к моему вопросу отношения это не имеет.

Только что проверил - не работает в IE :)

On 29 ноя, 15:20, Nikolay Nemshilov <nemshi...@gmail.com> wrote:
> не помню там ошибки

Nikolay Nemshilov

unread,
Nov 29, 2011, 7:30:01 AM11/29/11
to right...@googlegroups.com
а, это просто rightjs.org похоже отдает content-type неправильный. починю потом

Vic Khomyackov

unread,
Nov 30, 2011, 1:23:48 AM11/30/11
to right...@googlegroups.com

старые ИЕ не работают с локальными файлами через аякс, им нужно чтобы файл лежал где-то на сервере реальным урлом


старые IE (по крайней мере те, где присутствуют одновременно XMLHttpRequest и ActiveXObject, навскидку - 6-8 версии) не работают с локальными файлами (протокол file://) через XMLHttpRequest(), через ActiveXObject работают нормально. Для решения этой проблемы в Prototype я делал вот такой фикс:

/**
 * Provide the XMLHttpRequest for IE 5.x-6.x.
 * Other browsers (including IE 7.x-8.x) do not redefine XMLHttpRequest if it already exists.
 *
 * http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
 *
 * @return {Function} XMLHttpRequest
 */
Ajax.getTransport = function() {
  var XMLHttpFactories = [function() {
    return new XMLHttpRequest();
  }, function() {
    return new ActiveXObject("Msxml2.XMLHTTP.6.0");
  }, function() {
    return new ActiveXObject("Msxml2.XMLHTTP.3.0");
  }, function() {
    return new ActiveXObject("Msxml2.XMLHTTP");
  }, function() {
    return new XMLHttpRequest();
  }];

  // Fix IE XMLHttpRequest doesn't working for local pages ("file:" protocol)
  var factory, transport, i = (Prototype.Browser.IE && location.protocol === "file:") ? 1 : 0;
  for (; i < XMLHttpFactories.length; i++) {
    try {
      factory = XMLHttpFactories[i];
      transport = factory();
      // Use memoization to cache the factory
      Ajax.getTransport = factory;
      return transport;
    } catch (e) {
    }
  }

  return null;
};

Nikolay Nemshilov

unread,
Nov 30, 2011, 3:43:13 AM11/30/11
to right...@googlegroups.com
Проблема была в другом. Дело в том, что сейф-мод инициализируется в скрытом фрейме. Но т.к. реальный запрос делался извне фрейма, то втыкалась защита браузера.

var xhr = parent.ActiveX(...); все починоло
Reply all
Reply to author
Forward
0 new messages