2010-08-07 2 views
0

Lorsque j'essaie d'obtenir le contenu d'un fichier htm dans un div en utilisant un objet xmlhttprequest dans Firefox, il inclut tout, mais dans IE il n'inclut que le contenu du corps marque. En d'autres termes, il ignore tout le style (dans l'étiquette de tête) de la page, le rendant laid.L'utilisation de xmlhttprequest dans IE n'inclut que le contenu de la balise body

Est-il possible d'obtenir la page entière en utilisant xmlhttprequest dans Internet Explorer?

modifier:

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

Cette ligne FF obtient le contenu de la page, y compris la <head></head> section.

Dans IE, le contenu se trouve dans la section <body></body>.

+1

S'il vous plaît montrer un peu de code. –

+0

Je ne pensais pas que montrer du code ajouterait quelque chose d'utile à la question. Le code que j'écrivais n'existe plus car il a été remplacé par une tentative d'obtenir le même résultat en utilisant un iframe caché. – MrVimes

+0

Je suppose que je pourrais vous humour si. – MrVimes

Répondre

0

J'ai reçu une réponse d'ailleurs. En gros, il inclut toute la page (pas seulement le corps) mais IE choisit de ne pas le rendre (probablement le comportement correct)

J'ai donc élaboré un code pour extraire le CSS, le placer dans la tête et placer le trucs de corps dans la cible div. Donc, à la fois html et css de la page externe serait obtenu.

<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> 

Le code est loin d'être parfait, mais il fait le travail et je vais probablement améliorer le bit de code à peu maintenant que je sais que cela fonctionne

Questions connexes