IE7 и 8 выдают смешанное предупреждение о содержании, когда страница загружается с JQuery.load - PullRequest
3 голосов
/ 17 января 2012

У меня есть веб-страница, которая загружается двумя разными способами;пользователь может нажать на его ссылку, и он загрузит эту страницу в том же окне браузера;в противном случае ту же страницу можно просмотреть в диалоге JQuery, при этом во всплывающем окне отображается только область содержимого этой страницы.Когда эта страница загружается в главном окне браузера, она прекрасно работает во всех браузерах (всех версиях), но когда я загружаю ее во всплывающем окне, она выдает предупреждение о смешанном содержимом только в IE7 и IE8.

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

  1. Все ссылки либо относительные, либо явно имеют https: в URL.
  2. Я неиметь любое сообщение 404 для любого ресурса, загруженного браузером.
  3. Я просмотрел треффик Fiddler, и все запросы были https.
  4. В теге <script> нет атрибута src="javascript: ".
  5. Я не удаляю никакихdiv с background-image: стиль url, определенный непосредственно в атрибуте style.

Как вы можете видеть, я попробовал все предложения / исправления, доступные в Интернете, но безуспешно. Буду очень признателен за помощь в этомС уважением.

Спасибо, Навид

Ответы [ 3 ]

3 голосов
/ 11 октября 2013

Я провожу довольно много времени, изучая собственную версию этого.Наконец, мне помог найти ответ, использовав IE10 в режиме IE8 - это дало конкретную ошибку.Я настоятельно рекомендую, если у вас есть подобная проблема, и Fiddler или HttpWatch уверяет вас, что вы на самом деле не загружаете HTTP.

Проблема для меня оказалась со скриптом, который добавил ссылку на таблицу стилей кhead:

$("head").append('<link href="//example.com/stylesheets/icons" media="screen" rel="stylesheet" type="text/css" />');

IE8 обычно обрабатывает URL-адреса, относящиеся к протоколу, просто отлично, но, видимо, не в этом случае.Мне пришлось предоставить явный протокол:

$("head").append('<link href="'+window.location.protocol+'//example.com/stylesheets/icons" media="screen" rel="stylesheet" type="text/css" />');

Уродливо, но функционально.Надеюсь, это спасет кого-то от головной боли!

1 голос
/ 21 января 2012

Я наконец-то смог решить эту проблему и опубликовать решение здесь для любой бедной души, которая ищет в Интернете коренную причину. В моем случае это было вызвано тем, что недопустимый атрибут 'background' использовался в 3 разных тегах (например), по какой-то причине IE7 и IE8 выдавали предупреждение о смешанном контенте только тогда, когда эти страницы загружались в диалоге jquery. Если эта же страница загружалась непосредственно в браузер, предупреждения не было. Так что я до сих пор не понимаю, почему это происходит. Может быть, некоторые эксперты могут пролить свет на то, почему он так себя ведет. Спасибо всем за ваши ответы.

0 голосов
/ 17 января 2012

Общими виновниками являются изображения, на которые ссылается ваш CSS, URL-адреса iframe и URL-адреса сценариев.

Вы говорите, что не видите HTTP-запросов в Fiddler; но, возможно, это потому, что в настоящее время он блокирует незащищенные ресурсы. Скажите вашему браузеру, чтобы он загрузил все незащищенные ресурсы и следил за Fiddler

...