2009-12-24 3 views
3

У меня есть DIV, который содержит внутри фрейма от внешнего HTMLДив над IFRAME, который из самого фрейма

<iframe src="test.html"> 

HTML, основанный «контекстного меню» должны быть в верхней части фрейма, но HTML код контекстного меню находится в самом iframe. Предпочтительным является чистое решение CSS.

ответ

5

Содержимое iframe не может отображаться за пределами iframe. Внутри iframe вы можете разделить div над другими элементами, используя «position: absolute» и «z-index: 1000» (или другое соответствующее большое количество). Обратите внимание, что абсолютно позиционированные элементы удаляются из потока документа. Позиция может быть установлена ​​с использованием свойств «сверху», «слева», «справа» и «снизу» CSS.

0

Пока оба кадра находятся в одном домене, вы можете использовать Javascript для перемещения элемента DOM в родительский кадр (window.parent.document.appendChild(...)). Я сделал это, и он работает. Это просто много хлопот, и вы должны решить, стоит ли это.

Обязательно ознакомьтесь с комментарием bobince по вопросу ниже о том, как это сделать.

Не забывайте, что листы стиля детской рамки не применяются к меню, как только вы переместите его в родительский.

+0

Мы успешно выполнили что-то подобное на двух разных доменах, но это было немного сложнее. –

+0

Я думал об этом, но лично я чувствую, что это взлома. Если важно, чтобы содержимое отображалось вне границ iframe, оно не должно быть в iframe в первую очередь. Это было бы разумное решение, хотя, если это единственное решение. – CalebD

+0

Я действительно думаю, что это единственное решение, и вопрос выглядит как пограничный случай (как раскрывающееся или контекстное меню). Если вы выполняете перемещение вперед и назад через DOM, это на полпути чистое и законное решение, если это абсолютно необходимо для пользовательского интерфейса. –

0

Ваша действительно дублирующая типичная функциональность «Ajax», так как ее уже абстрагировали многие фреймворки (например, jQuery), и вы вряд ли сделаете это лучше, я бы дал этот снимок. Не изобретайте велосипед.

Вы можете найти great example here.

$("#links").load("/Main_Page #jq-p-Getting-Started li"); 
Смежные вопросы