Использование xmlhttprequest в IE включает только содержимое тега body - PullRequest
0 голосов
/ 08 августа 2010

Когда я пытаюсь получить содержимое htm-файла в div с помощью объекта xmlhttprequest в Firefox, он включает все, но в IE он включает только содержимое тега body. Другими словами, он игнорирует все стили (в теге head) страницы, что делает его уродливым.

Можно ли получить полную страницу при использовании xmlhttprequest в Internet Explorer?

редактирование:

document.getElementById('divtoreceivetheresponse').innerHTML = xmlHTTP.responseText

Эта строка в FF получает содержимое страницы, включая раздел <head> </head>.

В IE он просто получает содержимое внутри секции <body> </body>.

1 Ответ

0 голосов
/ 08 августа 2010

Я получил ответ из другого места.По сути, она включает в себя всю страницу (не только тело), ​​но IE решает не отображать ее (вероятно, правильное поведение)

Поэтому я разработал некоторый код для извлечения CSS, размещения его в голове ипоместите материал тела в целевой div.Таким образом, html и css с внешней страницы будут получены.

<html><head>
<script type="text/javascript" language="javascript">
function include(lyr,url)
{
   if (document.all)
   {
      try {
      var xml = new ActiveXObject("Microsoft.XMLHTTP");
      xml.Open( "GET", url, false );
      xml.Send()

       }
      catch (e) {
      var xml = new ActiveXObject("MSXML2.XMLHTTP.4.0");
      xml.Open( "GET", url, false );
      xml.Send()
      }
   }
   else
   {
            var xml=new XMLHttpRequest();
            xml.open("GET",url,false);
            xml.send(null);
   }

   text = xml.responseText;
   text = text.replace("<html>","");
   text = text.replace("</html>","");
   text = text.replace("<head>","");
   text = text.replace("</head>","");
   text = text.replace("<body>","");
   text = text.replace("</body>","");
   splittext = text.split("<style type=\"text/css\">");
   splittext = splittext[1].split("</style>");
   css = splittext[0];
   everythingelse = splittext[1];

   addCss(css);
   document.getElementById(lyr).innerHTML=everythingelse;   

}

function addCss(cssCode) {
var styleElement = document.createElement("style");
  styleElement.type = "text/css";
  if (styleElement.styleSheet) {
    styleElement.styleSheet.cssText = cssCode;
  } else {
    styleElement.appendChild(document.createTextNode(cssCode));
  }
  document.getElementsByTagName("head")[0].appendChild(styleElement);
}


</script>
</head>
<body onload="include('adiv','test.htm')">
<div id="adiv">sdfgboui hsdguhwruh o ikuy </div>
</body>
</html>

Код далек от совершенства, но он выполняет свою работу, и я, вероятно, буду постепенно улучшать код, теперь, когда я знаю, что он работает

...