Как клонировать текущий документ в IFrame с помощью Jquery - PullRequest
1 голос
/ 22 декабря 2010

Задача:

Когда моя домашняя страница загружается, я хочу загрузить страницу нормально. После запуска всех сценариев я хочу использовать Jquery для вставки IFrame в тело и использовать его для клонирования текущей страницы. (Почему? Поэтому у меня может быть часть страницы, которая не перезагружается между страницами на моем сайте.)

Я могу внедрить iframe и успешно клонировать страницу, используя атрибут src, однако это приводит к тому, что все содержимое страницы загружается дважды (один раз, когда страница загружается в первый раз, и снова, когда скрипт вводит iframe).

Итак, я хотел бы использовать JQuery для клонирования текущей страницы (заголовок и тело) и либо добавить ее в Iframe, либо использовать новый атрибут html5 srcdoc.

В настоящее время я не испытываю радости ни от одного маршрута. Позвольте мне изложить два метода здесь:

Клонировать и добавить

    // Get the width & height of current window
  wwidth = $(window).width();
  wheight = $(window).height();

  // inject the iframe 
  $("body")
   .append(
   '<iframe seamless ' + 
   ' class="hidden" id="iframe" border="0" frameborder="0" width="' 
   + wwidth + '" height="' + wheight + '"></iframe>' 
   + '<div id="temp"></div>'
   );

                // Attempt to replace iframe contents with current page contents
                $('iframe').contents().replace( $("html").clone().not("iframe") );

Это вставляет iframe, но не заменяет содержимое.

Использовать SRCDOC

// Same as above bu this part
// Attempt to set iframe contents with srcdoc
$('iframe').attr("srcdoc" , $('html').clone() );

Производит результат srcdoc = "[object] [Object]"

P.S. Я пытался добавить тег srcdoc, но не могу. Кто-то с более высокими баллами, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Насколько я могу судить, атрибут srcdoc не поддерживается IE 9, FF 5, Chrome 12 или Safari 5 (в Win 7).

Даже такие простые примеры не работают (пока):

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <iframe seamless
                sandbox="allow-same-origin"
                srcdoc="<p>My fav search engine is <a href='http://www.google.com'>Google</a>.">
        </iframe>
    </body>
</html>
0 голосов
/ 22 декабря 2010

Помимо SRCDOC (я еще не знал).

Боюсь, клон () не будет вариантом. Что касается спецификации DOM, то нельзя перемещать узлы между документами (и, по крайней мере, в MSIE это невозможно). Существует DOM-метод для импорта узлов, но, насколько мне известно, этот метод (DOMDocument->importNode()) не поддерживается ни одним браузером.

Более того: клонирование не предотвратит «двойную загрузку» в большинстве браузеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...