Toon posts:

Moz. bug, base url

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voordat ik het ga melden op de Mozilla bugtracker wil ik hier nog even een second opinion vragen voor het volgende. Erik Arvidsson van webfx.eae.net heeft zich een hele avond ermee bezig gehouden, met venkman ge-debugged, etc. maar kon ook niets anders concluderen als een bug.

Een testcase staat op:
http://mschopman.demon.nl/treeview/treeview.html

In de pagina die geopend wordt, wordt een treeview getoond geladen door xml data via xmlHttp. Elke node heeft een reload method, die resulteerd in het herladen van de node.

In de pagina is een functie gemaakt die deze reload method aanroept. De functie heet doReload(). Zodra je een node selecteerd, en deze functie aanroept zal de node zich gaan reloaden. Zowel in IE, als in Mozilla.

Als je echter van een andere window deze functie aanroept (window.opener.doReload() of igv iframes window.parent.doReload()) dan zal de functie worden aangeroepen, maar wordt ook de base url gewijzigd van de pagina.

Dit kun je als volgt test, open de url, en klik op open window linksbovenin. Klik op de link in die window die de doReload() uitvoert in de opener window. IE6 zal perfect de node reloaden, maar bij Mozilla blijft dit proces hangen. Debuggen in ondemand.js geeft aan de de oXMLDoc leeg is (line 91). Het outputten van de
responseText geeft dan een 404 error terug, waaruit blijkt dat Mozilla zomaar een directory hoger gaat zitten.

Zonder verwijzing naar een hogere directory gaat Mozilla toch zoeken in een hogere directory indien de functie doReload() niet vanuit de pagina wordt aangeroepen. Roep je de functie wel in die pagina aan, dan gaat het wel goed.

Dit lijkt me dus een bug, maar misschien....

Verwijderd

Lijkt me geen bug, er zal iets fout zitten in je script. Post je script eens op het forum, kan ik er wel even naar kijken. Modzilla werkt anders dan IE. IE wordt over het algemeen het meest gebruikt. Gevolgd door Modzilla. Je kan het in je script aanpassen !

[ Voor 37% gewijzigd door Verwijderd op 05-02-2004 23:29 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:20

crisp

Devver

Pixelated

Verwijderd schreef op 05 februari 2004 @ 23:28:
Lijkt me geen bug, er zal iets fout zitten in je script. Post je script eens op het forum, kan ik er wel even naar kijken. Modzilla werkt anders dan IE. IE wordt over het algemeen het meest gebruikt. Gevolgd door Modzilla. Je kan het in je script aanpassen !
Ik denk dat Gordijnstok toch wel weet waar hij mee bezig is...

Het is dat ik op dit moment mijn bed prefereer boven een nachtje debuggen, maar het klinkt mij ook als een bug in de oren...

Intentionally left blank


Verwijderd

Topicstarter
Verwijderd schreef op 05 februari 2004 @ 23:28:
Lijkt me geen bug, er zal iets fout zitten in je script. Post je script eens op het forum, kan ik er wel even naar kijken. Modzilla werkt anders dan IE. IE wordt over het algemeen het meest gebruikt. Gevolgd door Modzilla. Je kan het in je script aanpassen !
Ja dat dacht ik ook. Meestal is het je eigen stomme fout, of heeft het te maken met global vars, maar zelfs Erik Arvidsson kon geen fout ontdekken in mijn scripting, evenals de Mozilla Js Debugger. Er blijkt gewoon iets niet goed te gaan.

Verwijderd

Topicstarter
De "bug" is ondertussen op mozilla zine ook gepost. Wellicht dat de mensen die daar zitten er wat op weten.

Verwijderd

Verwijderd schreef op 06 februari 2004 @ 08:30:
De "bug" is ondertussen op mozilla zine ook gepost. Wellicht dat de mensen die daar zitten er wat op weten.
IK krijg een error in mijn console:
code:
1
2
3
Error: oXmlDoc.loadXML is not a function
Source File: http://mschopman.demon.nl/treeview/ondemand.js
Line: 84


(Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7a) Gecko/20040131 Firebird/0.8.0+)

Verwijderd

Topicstarter
Jups dat klopt, je krijgt die error omdat Mozilla dus een lege oXMLDoc returned vanwege het verkeerde pad. Zodra je de responseText returned krijg je een non-xml document, nl. de 404 error handler en dat is geen xml document.

Verwijderd

Verwijderd schreef op 06 februari 2004 @ 09:38:
Jups dat klopt, je krijgt die error omdat Mozilla dus een lege oXMLDoc returned vanwege het verkeerde pad. Zodra je de responseText returned krijg je een non-xml document, nl. de 404 error handler en dat is geen xml document.
OK, ik dacht dat je die niet gezien had, kan je een linkje geven naar het topic op mozillazine.org? Kon het zo snel niet vinden.

Waarschijnlijk kan Doron Rosenberg wel helpen bij het opsporen van de oorzaak, die is behoorlijk actief daar. (werkt aan mozilla bij IBM)

Verwijderd

http://forums.mozillazine...=49987&highlight=base+url

ondemand.js vanaf line nr 83:
code:
1
2
3
4
5
            if(oXmlDoc == null || oXmlDoc.documentElement == null){
                var oXmlDoc = xmlHttp.responseXML;
                    alert(xmlUrl+xmlHttp.responseText);
                oXmlDoc.loadXML(xmlHttp.responseText);
            }

Dit stukje snap ik niet (ik snap er uberhaupt weinig van, maar goed :) )

Dit stukje kan ik helemaal weglaten en dan werkt het wel goed. Maar je bedoelt dat het ook zou moeten werken als dit erbij stond?

Het lijkt me iig wel een bug in Mozilla.
In de popup-window staat niets anders als dit:
javascript:window.opener.doReload()
Dit werkt niet.
Maar als ik rechtstreeks in de url-bar van de pagina tik:
javascript:window.doReload()
Dan werkt het wel.

Verwijderd

Hmm,
volgens mij is het deze bug:
http://bugzilla.mozilla.org/show_bug.cgi?id=229294

Verwijderd

Topicstarter
Verwijderd schreef op 06 februari 2004 @ 12:15:
http://forums.mozillazine...=49987&highlight=base+url

ondemand.js vanaf line nr 83:
code:
1
2
3
4
5
            if(oXmlDoc == null || oXmlDoc.documentElement == null){
                var oXmlDoc = xmlHttp.responseXML;
                    alert(xmlUrl+xmlHttp.responseText);
                oXmlDoc.loadXML(xmlHttp.responseText);
            }

Dit stukje snap ik niet (ik snap er uberhaupt weinig van, maar goed :) )

Dit stukje kan ik helemaal weglaten en dan werkt het wel goed. Maar je bedoelt dat het ook zou moeten werken als dit erbij stond?

Het lijkt me iig wel een bug in Mozilla.
In de popup-window staat niets anders als dit:
javascript:window.opener.doReload()
Dit werkt niet.
Maar als ik rechtstreeks in de url-bar van de pagina tik:
javascript:window.doReload()
Dan werkt het wel.
Dit is een verkapte error handler, die recursief de functie aanroept maar dan met de responseText als attribute.

Initieel is een request op xmlDoc dus altijd leeg :)

Verwijderd

Topicstarter
Zo te zien heb ik pech idd. Dit is dus de bug die je krijgt.

En wie moet er weer toevallig op stuiten.. grrr :/

Ze geven dit iig aan als mogelijke tijdelijke fix:

"
Note that this can be worked-around by defining the xmlhttprequest object not in
the function but in the global namespace of page A.
"

dus dit maar even uitzoeken dan

[ Voor 28% gewijzigd door Verwijderd op 06-02-2004 13:15 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 06 februari 2004 @ 13:09:
[...]


Zo te zien heb ik pech idd. Dit is dus de bug die je krijgt.

En wie moet er weer toevallig op stuiten.. grrr :/
Heb je niks aan de 'workaround'?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Dit toevoegen aan je popup 'test.html':
<script src="treeview_files/xmlextras.js" type="text/javascript"></script>
hielp bij mij ook al.

Verwijderd

Topicstarter
Verwijderd schreef op 06 februari 2004 @ 13:25:
Dit toevoegen aan je popup 'test.html':
<script src="treeview_files/xmlextras.js" type="text/javascript"></script>
hielp bij mij ook al.
Ja daar was ik ook al achter gekomen, nadat er werd gesproken over global namespaces. Aangezien je met een popup werkt worden global namespaces wat lastiger, en moet je dus al je scripting dupliceren in popups.
Pagina: 1