Layer schließen/öffnen (DIV + JS) erzeugt GET-Request
Hans Wurst
- programmiertechnik
0 ChrisB0 Hans Wurst0 ChrisB0 Hans Wurst3 ChrisB
Hallo @all,
ich habe ein richtig komisches Phänomen auf meiner Seite.
Ich öffne einen Layer:
<!-- Info Layer -->
<div id="info">
<div id="info.caption" class="infoText" style="width:375px; float:left;"></div>
<div style="margin:5px; float:left;"><img src="https://www.xxxxx.de/Shop/Data/Img/Basket/de/button_close_layer.png" width="93" height="19" alt="" style="cursor:pointer;" onclick="closeLayer('info');" /></div>
<div id="info.content" class="infoText" style="color:#666; font-weight:normal; clear:left;"></div>
</div>
Beim schließen werden alle DIVs versteckt display:none;
und die JS-Variablen zurückgesetzt.
Das komische ist, das dann sofort ein kurzer GET-Request an die PERL die die Seite generiert abgegeben wird! Ich rufe aber keinen auf, nix der gleichen.
Dieser Effekt tritt in FF und IE auf, und ist nicht immer reproduzierbar, ist das ein Browser Bug?
function openLayer(LAYER_OBJ, TOP, LEFT, HEIGHT) {
document.getElementById(LAYER_OBJ).style.top = TOP +"px";
document.getElementById(LAYER_OBJ).style.left = LEFT +"px";
document.getElementById(LAYER_OBJ).style.height = HEIGHT +"px";
document.getElementById("layerContainer").style.display = "block";
document.getElementById(LAYER_OBJ).style.display = "block";
}
Hi,
Beim schließen werden alle DIVs versteckt
display:none;
und die JS-Variablen zurückgesetzt.
Das komische ist, das dann sofort ein kurzer GET-Request an die PERL die die Seite generiert abgegeben wird!
Ich liebe solche Formulierungen ...
Ich rufe aber keinen auf, nix der gleichen.
Dieser Effekt tritt in FF und IE auf, und ist nicht immer reproduzierbar, ist das ein Browser Bug?
Unwahrscheinlich - ein Bug in deiner Anwendung scheint mir plausibler.
Wenn wir deine obige Formulierung mal in nicht-noobisch übersetzen, soll sie wohl bedeuten, dass ein Request mit dem URL stattfindet, von dem auch das Dokument angefordert wurde.
Das könnte darauf hindeuten, dass irgendetwas angefordert wird, das als Adresse nur "" notiert hat - und somit beim "Auflösen" dieser Adresse wieder zum aktuellen URL des Dokumentes führt.
Wenn kein Neuaufbau der Seite stattfindet, dann wird es wohl kein Formular mit action="" sein - sondern vielleicht eher ein Bild mit src="" o.ä.
Vielleicht auch ein bisher nicht verwendetes Hintergrundbild mit falscher Adresse, oder ähnliches in der Art.
MfG ChrisB
Wenn wir deine obige Formulierung mal in nicht-noobisch übersetzen,
Lustig lustig
Wenn kein Neuaufbau der Seite stattfindet, dann wird es wohl kein Formular mit action="" sein - sondern vielleicht eher ein Bild mit src="" o.ä.
Nein, Bilder werden aus der Perl nicht angefodert.
Garnix wird da angefordert, das ist es ja!
Vielleicht auch ein bisher nicht verwendetes Hintergrundbild mit falscher Adresse, oder ähnliches in der Art.
Nein nein.
Hi,
Nein, Bilder werden aus der Perl nicht angefodert.
Schon wieder dieser Quark ...
Kannst du dich bitte mal so ausdrücken, dass es halbwegs sinnvoll ist?
Garnix wird da angefordert, das ist es ja!
Fein, dann existiert ja kein Problem.
MfG ChrisB
Schon wieder dieser Quark ...
Kannst du dich bitte mal so ausdrücken, dass es halbwegs sinnvoll ist?
Ja ich verstehe ja das meine Problembeschreibung beschissen ist, aber wie soll ich es euch näher beibringen?
Bilder werden per GET von einer anderen Adresse angeforder, ist auch ok so, und plötzlich wird die PERL angesprochen, diese hat eine Methode aufgerufen die Fehler verursacht hat, inzwischen ist das gefixt, aber mich interessiert es trotzdem, warum es dazu kamm.
Layeraufruf:
openLayer("info", (document.getElementById("global").offsetTop + document.getElementById("global").offsetHeight - 135), 200, 90);
Layer Funktion:
function openLayer(LAYER_OBJ, TOP, LEFT, HEIGHT) {
document.getElementById(LAYER_OBJ).style.top = TOP +"px";
document.getElementById(LAYER_OBJ).style.left = LEFT +"px";
document.getElementById(LAYER_OBJ).style.height = HEIGHT +"px";
document.getElementById("layerContainer").style.display = "block";
document.getElementById(LAYER_OBJ).style.display = "block";
}
Layer schließen:
function closeLayer(LAYER_OBJ) {
// InfoBox zum PaketShop/PackStation
document.getElementById("spezialInfo").style.display = "none";
// Hinweis nur für Lieferanschrift
document.getElementById("pflichtFelder").style.display = "none";
// Layer ausblenden, Container vestecken
document.getElementById(LAYER_OBJ).style.display = "none";
document.getElementById("layerContainer").style.display = "none";
// MsgLayer-Höhe zurücksetzen
document.getElementById("msg").style.height = "80px";
if(layerIsAppearFlag) resetLayerAnschriftData(); // Layer-Daten zurücksetzen
if(paketIsAppearFlag) { // PaketShop. -und PackStations-Daten zurücksetzen
resetPaketShopData();
resetPackStationData();
}
layerIsAppearFlag = false; // LayerFLAG zurücksetzen [geschlossen]
paketIsAppearFlag = false; // PaketShopFLAG/PackStationFLAG zurücksetzen [geschlossen]
layerArt = ""; // LayerArt zurücksetzen
layerHeight = 0;
}
Reset Funktion für den Layer:
function resetLayerAnschriftData() {
try {
document.getElementById("Anrede_Neu").selectedIndex = 0;
for(var n=0; n < document.getElementsByTagName("input").length; n++) {
if(document.getElementsByTagName("input")[n].id.indexOf("_Neu") != -1) {
if(document.getElementsByTagName("input")[n].id.indexOf("Land") == -1) document.getElementsByTagName("input")[n].value = "";
}
}
for(var i=0; i < document.getElementsByTagName("div").length; i++) {
if(document.getElementsByTagName("div")[i].id.indexOf("_Neu") != -1) {
if(document.getElementsByTagName("div")[i].id.indexOf("_in") != -1) {
document.getElementsByTagName("div")[i].innerHTML = "";
document.getElementsByTagName("div")[i].style.border = rightSyntax;
}
if(document.getElementsByTagName("div")[i].id.indexOf("_out") != -1) {
document.getElementsByTagName("div")[i].style.backgroundImage = "url()";
}
}
}
document.getElementById("error_Layer_out").style.backgroundImage = "url()";
document.getElementById("error_Layer_in").style.border = rightSyntax;
document.getElementById("error_Layer_in").innerHTML = "";
}
catch(e) {}
}
Hi,
Ja ich verstehe ja das meine Problembeschreibung beschissen ist, aber wie soll ich es euch näher beibringen?
Na "an die Perl" ist doch schon Quark.
Warum nennst du ein Perl-Script nicht auch ein Perl-Script?
Bilder werden per GET von einer anderen Adresse angeforder, ist auch ok so, und plötzlich wird die PERL angesprochen
Es findet also ein nicht beabsichtigter Get-Request statt, mit der Adresse des Perl-Scriptes, welches eigentlich nur die Aufgabe hat, das aktuelle HTML-Dokument zu generieren.
Kann man nicht wenigstens die Mühe und Sorgfalt auf wenden, das so einigermaßen technisch korrekt zu formulieren ...?
Ich lege da deshalb solchen Wert drauf, weil die Erfahrung zeigt, dass Leute, die bereits beim Formulieren ihrer Problembeschreibungen derart schludern, auch meistens bei der eigentlichen Problemanalyse entweder nicht mehr Sorgfalt walten lassen, oder einfach nicht zu einem angebrachten Maß an logischen Vorgehen in der Lage sind. Und oftmals auch nicht mal ihre eigenen Scripte durchschauen und wissen, was wann wo passiert ...
Erinnerst du dich, dass ich als mögliche Ursache u.a. sowas in Verdacht hatte?
Vielleicht auch ein bisher nicht verwendetes Hintergrundbild mit falscher Adresse, oder ähnliches in der Art.
Deine Replik darauf war ein ziemlich bestimmtes
Nein nein.
if(document.getElementsByTagName("div")[i].id.indexOf("_out") != -1) {
document.getElementsByTagName("div")[i].style.backgroundImage = "url()";
}
}
}document.getElementById("error_Layer_out").style.backgroundImage = "url()";
Und was bitte ist das jetzt hier?
So ziemlich genau das, was ich vermutet hatte.
An der Stelle, wo eine Adresse erwartet wird, steht schlicht und einfach *gar* *nichts* - und das ersetzt der Browser dann mit der Adresse, von der das aktuelle Dokument angefordert wurde.
Genau "die PERL die die Seite generiert", wenn wir es wieder auf Noob-Level benennen wollen, gibst du damit hier also als Adresse an, von der eine Bildressource zur Anzeige als Hintergrundbild angefordert werden soll.
MfG ChrisB
Und was bitte ist das jetzt hier?
So ziemlich genau das, was ich vermutet hatte.
An der Stelle, wo eine Adresse erwartet wird, steht schlicht und einfach *gar* *nichts* - und das ersetzt der Browser dann mit der Adresse, von der das aktuelle Dokument angefordert wurde.
Genau "die PERL die die Seite generiert", wenn wir es wieder auf Noob-Level benennen wollen, gibst du damit hier also als Adresse an, von der eine Bildressource zur Anzeige als Hintergrundbild angefordert werden soll.
Ok danke, ich hatte einen Verdacht, aber für mich sah url()
einfach aus wie "". Also nix, war unwissenheit.
Danke, werde das mal gleich ausprobieren.