jQuery/iframe, не работающий в Chrome

Я создал фан-страницу Facebook здесь:

http://www.facebook.com/apps/application.php?id=120196931351044&v=app_120196931351044

Это включает iframes для вызова определенных страниц/галерей изображений, которые используют jQuery. Все хорошо работает во всех браузерах за исключением Chrome. Ничто не обнаруживается в Chrome от iframes, просто пустой белый фон.

Я пытался использовать load событие вместо ready обработчик, но все еще никакая удача.
Кто-либо засвидетельствовал подобную проблему в хроме?

Ваша справка будет значительно цениться.

Большие изображения в заголовке проникают через iframe, страница, включающая jQuery.

Обновление:

Как показано в комментариях ниже, это, кажется, не работает даже в Safari также.

Обновление 2

Тот же код, кажется, работает в хроме, когда выполнено за пределами iframe, вот ссылка на рабочую страницу:

http://jsbin.com/esame4/4

Обновление 3:

Кажется, что эта проблема сохраняется в хроме при использовании iframes как видно здесь:

http://www.google.am/support/forum/p/Chrome/thread?tid=2c81c3e3fd99b388&hl=en
http://forums.sharethis.com/topic.php?id=2742

15
задан Sarfraz 27 June 2010 в 11:51
поделиться

4 ответа

Проверьте заголовки ответов на странице, которую вы пытаетесь поместить в iframe . Вам нужен заголовок под названием x-frame-options .

Это новая опция безопасности, которая запрещает браузеру загружать содержимое фрейма. Многие веб-серверы добавят его по умолчанию.

Это стоит проверить.

0
ответ дан 1 December 2019 в 05:02
поделиться

Несколько предложений, в основном связанных с настройкой Javascript на странице gallery.php:

Мой первый инстинкт - сказать, что это ошибка (или даже предполагаемый ответ) в способе Chrome / WebKit обрабатывает межсайтовые сценарии и другие подобные потенциальные дыры в безопасности. Я знаю, что некоторые дыры в безопасности связаны с запуском скриптов из iframe (как относится к этой бывшей ошибке Chrome ).

Возможно, это как-то связано с тем, что вы ссылаетесь на свой jquery.min.js с ajax.googleapis.com вместо того, чтобы размещать его в том же домене, что и ваша страница gallery.php. Попробуйте разместить копию jquery.min.js на своем сервере и сделать ссылку на нее и посмотреть, поможет ли это.

Также попробуйте переместить тег библиотеки jQuery внутрь тега , поскольку это более подходящее место для него.

Вы также можете попробовать использовать библиотеку jQuery Innerfade для запуска вращающегося баннера.Это очистит ваш скрипт и, кто знает, возможно, убедит браузер, что вы не пытаетесь использовать брешь в безопасности.

Если вы не можете переключиться на использование Innerfade, по крайней мере измените свои переменные JavaScript, чтобы они не назывались с $ (например, измените переменную «$ curbox» на «curbox»). Это может дополнительно прояснить любую путаницу, которую браузер может иметь с вашим Javascript. По крайней мере, это хорошая практика, особенно при использовании jQuery.

2
ответ дан 1 December 2019 в 05:02
поделиться

Эй, sAc, я попробовал это на Chrome 5.0.375.86 и это сработало. Поскольку safari и chrome используют один и тот же веб-движок (webkit), он может унаследовать ту же проблему. Поскольку это проблема javascript, и теперь chrome использует движок javascript google V8 вместо JavaScriptCore (движок javascript по умолчанию из webkit), эта проблема, похоже, решена в последних версиях Chrome. Возможно, проблема в том, что JavaScriptCore не отправляет события ready или load, поскольку DOM уже загружен в документ до того, как был построен iframe. Временным решением может быть установка флага, проверяющего, было ли инициализировано содержимое. Поставьте таймер на пять-десять секунд с setTimeOut для проверки этого флага. Если он не инициализирован, то вызывайте его через обратный вызов setTimeOut. Таким образом, если safari не вызывает события load или ready, setTimeOut может сделать это за вас. Конечно, не размещайте его внутри слоя jquery. Поместите его как чистый тег javascript в HTML, который будет загружен iFrame.

1
ответ дан 1 December 2019 в 05:02
поделиться

Если проблема с тем, что document.ready не вызывается в iframe из-за того, что страница уже была загружена в этот момент, можно ли вместо этого поместить javascript, который вы хотите загрузить, внизу новой страницы вместо в document.ready, чтобы он загрузился, как только все остальное будет загружено? Я сделал что-то подобное на некоторых страницах, например, поместил немного javascript вверху страницы, чтобы показать загружаемое изображение, и другой кусок внизу, чтобы скрыть его, и т. Д.

<html>
    <head><script>function pop(){alert("Page Loaded");}</script></head>
    <body>Lorum ipsum...</body>
    <script>pop();</script>
</html>
2
ответ дан 1 December 2019 в 05:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: