当我尝试使用Firefox中的xmlhttprequest对象将htm文件的内容转换为div时,它包含所有内容,但在IE中它只包含body标记的内容。换句话说,它忽略了页面的所有样式(在head标签中),使其变得难看。
在Internet Explorer中使用xmlhttprequest时是否可以获得整页?
编辑:
document.getElementById('divtoreceivetheresponse').innerHTML = xmlHTTP.responseText
FF中的这一行获取包含<head
&gt; </head
&gt;的页面内容。部分。
在IE中,它只获取<body
&gt; </body
&gt;内的内容。部分。
答案 0 :(得分:0)
我从其他地方得到了答案。基本上它确实包括所有页面(不仅仅是正文),但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>
代码远非完美,但它完成了工作,我可能会逐步改进代码,因为我知道它有效