Получение формы Google в IFrame с автоматической высотой

Итак, у меня есть форма, которую я создал с помощью Google Docs, потому что это казалось проще, чем начинать с нуля. Я заставил это работать, скопировав код со страницы Google на страницу моего домена.

Мне удалось заставить его автоматически изменять высоту с помощью этого прекрасного маленького скрипта, который я нашел здесь: http://www.frontpagewebmaster.com/m-89000/tm.htm (это не очередная тема о том, КАК динамически изменять размер iframe)

function changeContent() { 
document.getElementById('contentDIV').innerHTML = window.frames['contentFRAME'].document.getElementsByTagName('html')[0].innerHTML;
} 

и iframe на МОЕЙ отображаемой странице:

<div class="right" id="contentDIV">
<iframe id="contentFRAME" src="raw-form.html" name="contentFRAME" onLoad="changeContent()" style="height:0; width:0; border-width:0;">Loading...</iframe>
</div>

Но теперь, когда я нажимаю «Отправить», страница подтверждения или ошибки открывается в окне _parent (может быть, _top), а не в iframe (_self, который должен быть по умолчанию?). target="" устарела и не работает. Это также происходит с ЛЮБОЙ ссылкой внутри iframe. Я пробовал пару разных скриптов изменения размера, но я недостаточно знаю, чтобы понять это? Или код на самом деле не работает для моих целей? Я не уверен... Вот что у меня работает: http://fiendconsulting.com/60minutedesign/form-embed.html

Что мне нужно: что-то, что изменяет размер содержимого iframe при первой загрузке родительской страницы и открывает все ссылки в их _self фрейме/странице/что угодно.
Что меня не волнует about: изменение размера iframe в соответствии с содержимым последующих страниц. Если я щелкну ссылку внутри iframe, мне не нужно, чтобы iframe изменял размер любой страницы, на которую я только что зашел.

Я программист-самоучка, и у меня есть интересные пробелы в моих знаниях. Я также только начал изучать JS и PHP и нахожусь на этапе чтения, комментирования и каннибализации. Лучше предположить, что я не знаю, и мне бы ОЧЕНЬ помогло, если бы вы сказали мне, куда вставить код (какой документ и где в документе). :)


person Talaya S. White    schedule 22.03.2012    source источник
comment
Я на самом деле работаю над точно такой же проблемой прямо сейчас. Я не решил ни одну из двух проблем (размер и ссылки). Однако меня больше беспокоит размер, так как я получаю полосы прокрутки в различных браузерах, если я устанавливаю слишком маленький размер, а слишком большой просто выглядит глупо. К сожалению, опубликованная вами ссылка, которая решает проблему автоматического изменения размера, не работает, и у Google нет кеша. Можете ли вы вставить мне фрагмент? Спасибо!   -  person RawwrBag    schedule 28.11.2012


Ответы (1)


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

Ваша функция:

function changeContent() { 
document.getElementById('contentDIV').innerHTML = window.frames['contentFRAME'].document.getElementsByTagName('html')[0].innerHTML;
}

Вы берете элемент «contentDiv», вы берете HTML-код вашего «iframe», а затем устанавливаете то же самое для своего содержимого div. Это приводит к тому, что ваш «iframe» больше не существует.

Например:

скажем, мой контент div имел это:

<div class="right" id="contentDIV">
<iframe id="contentFRAME" src="raw-form.html" name="contentFRAME" onLoad="changeContent()" style="height:0; width:0; border-width:0;">Loading...</iframe>
</div>

В моем iframe есть только 1 ссылка: <a href="www.example.com">Example Link</a>

После вашей функции ваш contentDiv теперь выглядит так:

<div class="right" id="contentDIV">
<a href="www.example.com">Example Link</a>
</div>

вы эффективно удалили свой iframe и поместили содержимое iframe (ссылку) в свой основной div. Теперь, если вы нажмете на элемент, он автоматически откроется на той же странице, то есть на «родительской», но родительской больше нет!

Поэтому в будущем вы не должны заменять контент; вместо этого вы должны изменить высоту/ширину iframe. Взгляните на: Отрегулируйте высоту ширины iframe соответствовать содержимому в нем

person Gautam Bhutani    schedule 16.01.2014