Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

[js] Neues Fenster onload + reload Problem

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

[js] Neues Fenster onload + reload Problem

Beitrag von Roughael »

folgende situation:
Ich erzeuge ein neues fenster, dem ich einen onload verpasse mittels addEventListener.
in diesem onload prüfe ich, ob die seite korrekt geladen wurde (gelegentlich gibt es dank massig vieler anfragen eine fehlermeldung) und wenn nicht, findet ein reload statt. soweit funktioniert das.

wenn der reload allerdings stattgefunden hat greift das onload nicht mehr, auch wenn ich ihn manuell neu hinzufüge wird er beim reload nicht erneut aufgerufen.

jemand ne idee wie man das fixen kann ?
der gesammte js code ist auf der startseite, also nicht im neuen fenster.
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Pummeluft
Daemia
Daemia
Beiträge: 319
Registriert: Feb 2010

Beitrag von Pummeluft »

Könntest du den relevanten Code posten?
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

Code: Alles auswählen

var w = window.open("http://blaaa/");
w.addEventListener('load', function() {
    //..
    if(!isPageValid(w))
        w.location.reload();
}, true);
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Nomschta
Rampage
Rampage
Beiträge: 14303
Registriert: Jun 2001
Steam: TomHonks

Beitrag von Nomschta »

ich kenn mich mit js nicht aus, aber gibt es vielleicht noch andere events die passender wären? also zB auf load und auf refresh "hören"
BildBild Danke an Drasora für ihr Wichtelgeschenk!
MAR hat geschrieben:Führt der durch den Terrence-Hill? :ugly:
Pummeluft
Daemia
Daemia
Beiträge: 319
Registriert: Feb 2010

Beitrag von Pummeluft »

Das Problem ist also, die Seite wird neu geladen, aber auf die neu geladene Seite könnte wieder nicht korrekt geladen worden sein und in dem Fall funktioniert der Event-Listener nicht mehr?

W ist in dem neuen Fesnter nicht mehr bekannt. Durch this oder window ersetzt, funktioniert es (Lustigerweise stört es ihn beim w.close(); in keinster Weise :ugly: ):

Seite1.html:
<html>
<head>
<title>Seite1</title>
<script type="text/javascript">
function main()
{
var w = window.open("seite2.html");
w.addEventListener('load', function()
{
window.setTimeout(function()
{
w.close();
this.location.reload();
}, 500);

}, true);
}
</script>
</head>
<body onload="main()">
</body>
</html>

Seite2.html:
<html>
<head>
<title>Seite2</title>
<script type="text/javascript">
function main()
{
var bgcolorlist = new Array("red", "blue", "green", "yellow");
document.body.style.background = bgcolorlist[Math.floor(Math.random()*bgcolorlist.length)];
}
</script>
</head>
<body onload="main()">
</body>
</html>
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

aber window ist in dem fall doch das aufrufende fenster oder nicht ?
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

gerade ausprobiert, funktioniert nicht.
this ist hier nicht das geöffnete fenster, sondern das aufrufende fenster.
hau das in die firebug konsole rein(falls du sie hast):

Code: Alles auswählen

var w = window.open("http://quake.ingame.de/forum/");
w.addEventListener('load', function() {
    window.setTimeout(function() {
        alert('reloaded');
        this.location.reload();
    }, 500);
}, true);
eventuell liegt es daran dass ich zum aufrufenden fenster zurück wechsel? das lässt sich jedoch nicht vermeiden, bzw. geschieht regelmäßig.
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Pummeluft
Daemia
Daemia
Beiträge: 319
Registriert: Feb 2010

Beitrag von Pummeluft »

Huch, hast recht. Das machte keinen Sinn. Hatte gar nicht geschaut, was mit Seite1 passiert :F
So geht es: Seite1

Code: Alles auswählen

<html>
	<head>
		<title>Seite1</title>
		<script type="text/javascript">
		alert("Ich werde nur einmal aufgerufen!");
		function main()
		{
			var w = window.open("seite2.html");
			w.addEventListener('load', function()
			{
				window.setTimeout(function()
				{
					w.close();
					main();
			
				}, 1000);

			}, true);
		}
		</script>
	</head>
	<body onload="main()">
	</body>
</html>

<html>
	<head>
		<title>Seite2</title>
		<script type="text/javascript">
		function bla()
		{
			var bgcolorlist = new Array("red", "blue", "green", "yellow");
			document.body.style.background = bgcolorlist[Math.floor(Math.random()*bgcolorlist.length)];
		}
		</script>
	</head>
	<body onload="bla()">
	</body>
</html>



Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

ja, funktionieren tut es, ist aber nicht das wonach ich gefragt habe..
du erzeugst ein neues fenster. beim neu erzeugen wird automatisch zum neuen fenster gewechselt.
bei einer problemschleife hat man also wie bei deinem beispiel schwierigkeiten zum originalfenster zurück zu kommen ohne dieses zu schliessen.
bei meinem anwendungszweck sollte seite2 im hintergrund neu geladen werden bis es endlich geht und dann auf seite1 eine nachricht erscheinen.

meine vorerst lösung dazu sieht so aus, dass ich auf seite2 im onload eine methode des parent fensters aufrufe.
auch nicht ganz schön, aber funktioniert mit reload anstelle von neuem fenster.

bevor ichs vergesse: danke fürs mitdenken, mir scheint jedoch für das eigentliche problem gibt es keine lösung.
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Mein Name sei Wapaz
Humilation
Humilation
Beiträge: 10589
Registriert: Dez 2006
Kontaktdaten:

Beitrag von Mein Name sei Wapaz »

Wozu brauchst du überhaupt Popup-Fenster? Sowas ist ziemlich miese usability.
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

1. is kein echtes popup fenster sondern ein normales fenster, welches heutzutage eh im neuen tab geöffnet wird.
2. geht um nen greasemonkey script, welches nur ich nutze, also ist die nutzbarkeit lediglich aus meiner perspektive interessant. und für mich isses so am brauchbarsten.
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Antworten