documentElement.innerHTML не показывает тело iframe - PullRequest
1 голос
/ 01 августа 2011

У меня есть страница с одним iframe.Я делаю iframe через JavaScript.позже мне нужно сохранить эту страницу и открыть ее с точным содержанием.например, если пользователь написал что-то в теле iframe и сохранил его, а затем снова открыл страницу, iframe должен иметь то же содержимое.чтобы сохранить страницу, моя логика - получить innerHTML документа, создать новый html-файл и записать в него содержимое.Теперь, когда я делаю document.documentElement.innerHTML, в нем появляется раздел iframe, но раздел body и раздел html отсутствуют.единственное, что появляется, это <iframe></iframe>.Как я могу получить HTML iframe вместе с HTML родительской страницы?Вот код, позволяющий увидеть, что document.documentElement.innerHTML печатает на консоли

<html>
<head>
   <title>iframe test</title>
<script type="text/javaScript">
function showStr(){

        var customArea = document.getElementById('custom-area');
        var newdiv = document.createElement('div'); 
        newdiv.setAttribute('id',"myDiv");
        customArea.appendChild(newdiv);
        var htcontents = "<iframe id='myIframe' frameborder='1'></iframe>";
        newdiv.innerHTML = htcontents; 
        document.getElementById("myIframe").contentDocument.designMode="on";
}

function showIF()
{
    console.log(document.documentElement.innerHTML);
}
</script>
</head>
<body onLoad="showStr()">
<button id="myButton" onClick="showIF()"></button>
<div id="custom-area"></div>
</body>
</html>

Я использую это в Chrome ... спасибо !!

1 Ответ

1 голос
/ 01 августа 2011

На основании этого поста , вот решение:

ОБНОВЛЕНИЕ

function showIF()
{
  var f= document.getElementById('myIframe');
  var d= f.contentDocument? f.contentDocument : f.contentWindow.document;
  var customArea = document.getElementById('custom-area');
  //read the content of iframe
  var iframeContent = d.body.innerHTML;
  //delete the iframe himself
  f.parentNode.removeChild(f);
  //Append the html to parent div
  customArea.innerHTML += iframeContent;
  //console.log(d.body.innerHTML);
}

По крайней мере, это работает с моим браузером Chrome (версия11.0.696.60)

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