2010-08-07 84 views
0

当我尝试使用Firefox中的xmlhttprequest对象将htm文件的内容转换为div时,它包含了所有内容,但在IE中它只包含body的内容标签。换句话说,它会忽略页面的所有样式(在标签头部),使其变得丑陋。在IE中使用xmlhttprequest只包含body标签的内容

当在Internet Explorer中使用xmlhttprequest时可以获取整个页面吗?

编辑:

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

这条线FF获取页面内容,包括<head></head>部分。

在IE中它只是获取<body></body>部分中的内容。

+1

请出示一些代码。 – 2010-08-07 20:19:37

+0

我不认为显示代码会添加对问题有用的任何内容。我写的代码不再存在,因为它已经被替换为尝试使用隐藏的iframe获得相同的结果。 – MrVimes 2010-08-07 22:05:02

+0

我想我可以幽默你。 – MrVimes 2010-08-07 22:05:46

回答

0

我从别处得到了答案。基本上它包括所有的页面(不只是身体),但IE浏览器选择不渲染它(可能是正确的行为)

因此,我编制了一些代码来提取CSS,将它放在头部,身体的东西在目标股利。因此,外部页面的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> 

的代码是远非完美,但它的工作,我可能会改善位码位现在我知道它的工作原理

相关问题