Возможно ли, что iframe изменит размер без помощи главного окна?
Оба основных окна и iframe находятся в одном домене, но я хочу, чтобы изменить размер iframe, чтобы он соответствовал его содержимому, используя js только внутри этого iframe.
Я также не знаю идентификатор iframe, который назначен ему в главном окне. И я не хочу использовать jquery или любую другую инфраструктуру для него.
Ответы
Ответ 1
Вы также можете сделать это, не зная id
iframe
в родительском окне:
window.frameElement.style.width = iframeContentWidth + 'px';
window.frameElement.style.height = iframeContentHeight + 'px';
См. frameElement
в MDN.
ИЗМЕНИТЬ
На всякий случай, если iframe
находится в контейнере, который имеет фиксированный размер и overflow: hidden
, вы можете сделать что-то вроде этого:
function resizeIframe (iframeContentWidth, iframeContentHeight) {
var container = window.frameElement.parentElement;
if (container != parent.document.body) {
container.style.width = iframeContentWidth + 'px';
container.style.height = iframeContentHeight + 'px';
}
window.frameElement.style.width = iframeContentWidth + 'px';
window.frameElement.style.height = iframeContentHeight + 'px';
return;
}
Ответ 2
Для контента такого же происхождения, как ваш, да, вы можете.
Заимствовать у Гэри ответ на вышеупомянутый вопрос:
В iframe window.parent ссылается на глобальный объект родителя документ, а не сам объект документа. Я считаю, что вам нужно будет используйте parent.document.getElementById
Попробуйте получить доступ к iframe, используя parent.document, и посмотрите, разрешает ли это вам проблему.
Ответ 3
Предполагая, что у вас есть только 1 IFRAME в главном окне, из Javascript документа IFRAME вы можете сделать что-то вроде:
function getMySelf()
{
return (window.parent.document.getElementsByTagName("iframe"))[0];
}
var myself = getMySelf();
myself.style.width = whateverWidth;
myself.style.height = whateverHeight;