2009-12-23 1 views
1

Я загружаю страницу через AJAX с функцией jQuery load(). Он не работает в IE8, давая ошибку «отказ в доступе». С помощью отладчика IE кажется, что когда jQuery пытается открыть xhr, т.е. блокирует его.jQuery load() выбрасывает ошибку разрешения в IE

Проблема в том, что на моей странице есть javascript src, который указывает на bing-карты js api (который, конечно, находится в совершенно другом домене, чем мой). Мне кажется, что IE пытается захватить этот js-файл через xhr, который затем выдает ошибку «отказался». Есть ли обходной путь для этого?

Я могу только помнить о загрузке карт bing js и обслуживании их локально.

+0

Почему вы используете '.load()' для загрузки .js-файла? '.load()' предназначен для захвата html из URL-адреса и заполнения его на странице. Возможно, вам нужен '$ .getScript' вместо этого? –

+0

Я загружаю целую страницу, и на странице есть сценарий. –

ответ

2

Я в конце концов схватил копию сценария и включил его сам, поэтому он находится в том же домене.

0

Вы можете включить тег script в API Bing Maps в родительском документе (тот, который вызывает вызов jQuery load()).

+1

Я не контролирую родительский документ. –

4

Я сделал больше тестов на этом. И, похоже, ошибка была вызвана недопустимыми структурами HTML на странице. Поскольку это очень сложная страница, есть несогласованные открытые <div> или < таблица > на странице, так как, когда я сокращаю страницу до минимума, она работает и с IE. Но я не понимаю, почему он не работал, когда вы впервые попадаете на страницу, и если вы обновите страницу, она будет работать после этого.

0

Просто для справки:

я испытал эту ошибку на Windows 8 с Internet Explorer 10 в моем приложении WinForms ,

В этом приложении у меня есть WebBrowser control, который загружает его содержимое со встроенного веб-сервера, а также связывается через window.external с моим приложением WinForms.

Достаточно рыболовства по ключевым словам.

Получение этой ошибки

Теперь, что происходит, чтобы получить эту ошибку JQuery в моем приложении был:

  1. Браузер успешно загрузил URL.
  2. Я программно загрузил еще один URL-адрес.
  3. Затем я сразу же открыл дочернюю форму с Form.ShowDialog.

После закрытия этой формы была показана ошибка jQuery.

Разрешая эту ошибку

я решил ошибку, откладывая открытие дочерней формы, пока приложение не простаивал.

I.e.Я использовал список Queue внутри своей основной формы, подписался на событие Application.Idle и внутри этого обработчика событий я обработал очередь один за другим.

Новые шаги были теперь:

  1. Браузер успешно загрузил URL.
  2. Я программно загрузил еще один URL-адрес.
  3. Поместите это действие, чтобы открыть дочернюю форму внутри очереди ожидания.
  4. Когда очередь ожидания обрабатывается, она открывает дочернюю форму.

Затем ошибка исчезла.

Я думаю, вместо использования этой простой обработки я также мог дождаться, пока веб-браузер завершит загрузку, подписавшись на DocumentCompleted event и показывая там дочерний диалог.

Надеюсь, это поможет кому-то ...

 Смежные вопросы

  • Нет связанных вопросов^_^