Drupal. Устраняем ошибку в Opera при ajax запросах

Ответить
Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009
Наверняка многие пользователи браузера Opera (В FireFox и IE все нормально) замечали ошибку возникающую при отправлении ajax запросов таких как, например, загрузка файла на сервер (модуль Upload):
Произошла HTTP ошибка 0. \n/site/upload/js
В сети есть много тем которые направлены на решение этой проблемы. В основном советуют обновить файлы jquery.form.js и jquery.js в папке misc (см. комментарии в теме http://www.drupal.ru/node/14290) - мне этот способ не помог.


Но так как решить проблему нужно было, то было найдено кардинальное решение:
В файле misc/ahah.js заменяем блок

Код: Выделить всё

  $(element_settings.element).bind(element_settings.event, function() {
    $(element_settings.element).parents('form').ajaxSubmit(options);
    return false;
  });
на

Код: Выделить всё

  if (!$.browser.opera) {
      $(element_settings.element).bind(element_settings.event, function() {
        $(element_settings.element).parents('form').ajaxSubmit(options);
        return false;
      });
  }
таким образом в Opera при загрузке файла страница будет обновляться, а в остальных браузерах файлы будут загружаться через AJAX.


P.S. Похожая может выскакивать и в Google Chrome если в нем установлено расширение SmoothScroll (см. http://www.drupal.ru/node/39932).

Creaternal © 2010

Ответить