Как я могу остановить перезагрузку IFrame, когда я изменю его положение в DOM?

Есть ли способ остановить повторное загрузку содержимого iframe при изменении его позиции в DOM? Простой пример:

<script type="text/javascript">
function moveiframe() {
    var dest = document.getElementById('newparent');
    dest.appendChild(document.getElementById('googleframe'));
}
</script>
<iframe src="http://www.google.com" id="googleframe"></iframe>
<input type="button" onclick="moveiframe()" value="Move" />

нажатие кнопки "Переместить" изменяет родительский элемент iframe и перезагружает его содержимое (в Firefox и Chrome, но не в IE).

Любые предложения будут высоко оценены!

[Обновлено с фоновой информацией]

Я загружаю рекламные объявления на сайте в разделителях-заполнителях внизу страницы (чтобы предотвратить загрузку рекламы из-за поднятия загрузки страницы), а затем переместив те div, в которые они были записаны, в свой правильный контейнер после загрузки. Все это отлично работает... если в объявлении, которое используется, используется iframe (например, google adsense), и в этом случае объявление загружается дважды, а показ сервисов испорчен.

Ответ 1

Учитывая простоту вашего тестового примера, похоже, что единственные методы, которыми вы располагаете, чтобы поместить элемент внутри другого, всегда заставляют содержимое перезагружать.

[ Изменить] После просмотра того, что вы пытаетесь сделать, есть несколько вещей, которые вы можете попробовать:

  • Все объявления могут быть поданы в IFRAME (на вашем собственном сайте), которые не будут поддерживать загрузку страницы и могут быть размещены в нужном месте сразу.
  • Как упоминалось выше, IFRAME не будут поддерживать загрузку страницы, чтобы вы могли сразу разместить рекламу, если они являются IFRAME, и загружать их внизу, если они что-то еще. Конечно, это не сработает, если медленная часть до того, как вы узнаете, собираетесь ли вы получить IFRAME или нет.
  • Вы можете сохранить содержимое в нем заполнитель DIV, но при загрузке просто переместите (с абсолютным позиционированием CSS) в нужное место на странице. Не самое элегантное решение, но должно работать нормально.

Ответ 2

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

  • Поместите скрипты объявлений внутри div с их стилем display, установленным на none. Затем переместите их к их окончательной десерации и измените их на display: block после загрузки страницы. Возможно, это помешало бы iframe загрузить исходный контент.
  • Попробуйте сделать то же самое, только с visibility, установленным на hidden, затем измените на visible.

Ответ 3

Быстрое предположение заключается в том, чтобы отключить значение атрибута src для элемента iframe или установить его "about: blank".

Вы можете восстановить предыдущее значение (или любое значение) атрибуту src iframe (используя JavaScript).

Привет,

Ответ 4

Если объявления фиксированного размера, вы можете разместить их в абсолютно позиционированных div. Затем, как только страница загружается, вы можете переместить эти контейнеры в их назначенные точки. Существует множество образцов Javascript для вычисления абсолютной позиции из относительной позиции. Конечно, вам придется резервировать пространство визуально в целевых div, чтобы реклама не покрывала контент.

Ответ 5

Как насчет использования запроса ajax для загрузки содержимого объявления и добавления содержимого в DOM при возврате вызова ajax вместо использования iframe?