Hoi mensen,

Ik heb een scriptje waarin ik uit een xmlfile <item>'s haal. Uit die item's haal ik de inhoud en die stop ik in een div in mijn document. Ik gebruik firebug en toen ik de HTML weergave deed, was de pas toegevoegde html grijsgemarkeerd, en de tekst stond wel op de pagina alleen zonder de goede layout. Ik heb toen van alles geprobeerd en ik kwam er achter dat ik door een innerHTML = innerHTML+" " de HTMLcode in firebug weer 'actief' kreeg. Op de pagina kreeg de inhoud ook meteen de goede layout. Alleen: dit ging over firefox.

In IE(7) blijft alles gewoon leeg. Dus ging ik - heel wijs - tussen de code alerts zetten. Even kijken tot waar hij kwam.
portfolioXMLresponse = xml.responseXML;
portfolioItems = portfolioXMLresponse.getElementsByTagName('item');
portfolioWrapper.innerHTML = '';

alert('halfway processing');
var tmp = portfolioItems[0].getElementsByTagName('ul')[0];
alert('ul stored');
portfolioWrapper.appendChild(tmp);
alert('ul appended');
	portfolioWrapper.appendChild(portfolioItems[0].getElementsByTagName('div')[0]);
alert('data appended');

portfolioWrapper.innerHTML = portfolioWrapper.innerHTML+" ";
	
var clear = document.createElement('div');
clear.setAttribute('class','clearboth');
portfolioWrapper.appendChild(clear);
alert(portfolioWrapper.innerHTML);

Nu kwam de alert met 'ul stored' nog wel, maar daarna stopte het. In firefox kwam de pagina gewoon zoals het eruit moest zien.

Hebben jullie enig idee hoe dit kan worden opgelost? Je kunt de pagina bekijken op http://www.lauriumwebdesign.nl/portfolio/

B.v.d,
Herman Banken
Waarom gebruik je iets als dat..? -_-'
Waarom niet? En dit is geen oplossing voor mijn probleem.
als je toch aan het alerten bent, kijk dan eens wat hij geeft als je portfolioItems[0] en tmp alert.
het zou fijn zijn om te weten wat je probeert te appenden.
en je stopt het in portfolioWrapper, heb je die var eerder al aangemaakt ofzo?
Ja klopt.. je kunt het gehele script bekijken op http://www.lauriumwebdesign.nl/scripts/portfolio.js en de xml op http://www.lauriumwebdesign.nl/portfolio.xml/
tmp geeft in firefox een [Object Element] ofzo en in IE helemaal niets.

Portfoliowrapper is een div op de pagina met id=portfolio. Die declareer ik bovenaan het script en set ik in een onload.

edit: Die ajax functies onderaan gebruik ik niet. Dat was een alternatief. Ik gebruikte en gebruik de prototype.js framework.
Ik heb inmiddels de site ook in Opera en Safari(windowsversie) getest. In Opera is de inhoud er wel, maar de layout klopt niet. In Safari staat er helemaal niets.

portfolioXMLresponse = xml.responseXML;

Het je het xmlhttp object wel op een crossbrowser manier opgehaald? Bijvoorbeeld zo:

function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}
Jan Koehoorn schreef op 26.05.2008 08:53

portfolioXMLresponse = xml.responseXML;

Het je het xmlhttp object wel op een crossbrowser manier opgehaald?

Ja, ik gebruik er dat prototype.js voor van http://www.prototypejs.org/

ik dook eens in die code en ik denk dat je dit deel bedoeld:
var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ) || false;
  },

  activeRequestCount: 0
};

de hele code is op http://lauriumwebdesign.nl/scripts/lightbox/js/prototype.js te zien, maar dat is een beetje onnavolgbaar. Ik had ook die andere methode die eronder staat in portfolio.js al geprobeerd, maar dat maakt geen verschil. De http request komt gewoon binnen. En de alerts doen het ook allemaal in firefox enzo.
Heeft iemand een idee!?
Ik kom er niet uit.
Ik heb geen javascript aan staan en zie geen pagina... Waarom doe je het zo?

(Ik heb wel javascript aan, normaal gesproken ^^)

Reageren