2010-08-07 82 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> 

的代碼是遠非完美,但它的工作,我可能會改善位碼位現在我知道它的工作原理

相關問題