Этот вопрос не о всплывающем фрейме внутри лайтбокса; скорее, речь идет об iframe на странице, который может запускать собственное окно в стиле Lightbox на странице, содержащей этот iframe. Я думаю, что это невозможно, потому что iframe содержит содержимое другого URL-адреса, и любой лайтбокс, запускаемый этим URL-адресом, должен соответствовать iframe. Спасибо.
Может ли iframe открывать окно в стиле лайтбокса?
Ответы (7)
<iframe>
не может взаимодействовать со своим родительским фреймом, если два фрейма находятся в разных доменах.
Если оба сайта принадлежат одному и тому же домену, вы можете добавить JS лайтбокса в основной фрейм и вызвать функцию внутри iframe, используя «parent.function».
Попробуйте посмотреть на fancybox. Я знаю, что он поддерживает iframes, и я всегда использую его поверх Lightbox, гораздо более настраиваемый. Я почти уверен, что он может работать с вложенными фреймами, однако могу ошибаться. Тем не менее стоит попробовать.
Может отображать изображения, элементы HTML, фильмы SWF, фреймы, а также запросы Ajax.
В нижней части страницы есть примеры: http://fancybox.net/.
Я не знаю, есть ли он где-нибудь в Интернете, но я видел, как Facebook провел презентацию о внедрении iframe в другие сайты, чтобы обойти такие проблемы с межсайтовыми проблемами. Стоит посмотреть.
Это возможно, но только если вы можете иметь некоторый контроль над удаленным сервером. Это можно сделать различными способами, но для быстрого старта вы можете использовать этот простой фрейм-почтальон.
Когда вы получаете сообщение из фрейма (возможно, с URL-адресом изображения), вы просто открываете диалоговое окно лайтбокса в своем основном документе.
Простой обходной путь, который сработал для меня, состоял в том, чтобы инициализировать лайтбокс в родительском окне, затем создать пустую ссылку-заполнитель и функцию, которая изменяет href и щелкает ссылку-заполнитель:
В верхнем или нижнем колонтитуле родительского окна:
<script type="text/javascript">
$(function () {
$('.lightbox').lightBox();
});
function image_preview(url)
{
$('#fakebox').attr('href',url);
$('#fakebox').trigger('click')
}
</script>
Где-то в теле родительского окна:
<a href="" class="lightbox" id="fakebox"></a>
Итак, в iframe я вызываю родительскую функцию для запуска fancybox:
<a href="JavaScript:void(0);" class="btn btn-tertiary btn-small" onClick="parent.image_preview('http://static8.depositphotos.com/1007989/1011/i/950/depositphotos_10118078-Grinning-Smiley.jpg')">Preview</a>
Мы сталкиваемся с той же проблемой, я думаю, одним из возможных решений является window.open из iframe.