webForumDet fria alternativet

Kan man verifiera att popupfönster har öppnats.

JavaScriptur Javascript

10 svar · 601 visningar · startad av Mattias Nordin

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#1

Hej, jag har sökt lite efter ett javascript som verifierar att ett popupfönster faktiskt har öppnats. För det första, går det att genomföra? Jag får det inte att fungera på något sätt... vilket säger mer om mina kunskaper med javascript men ändå :l

Så här ser min testsida ut. Samtliga funktioner returnerar "Closed" oavsätt om popupfönstret är öppet eller ej. Vad gör jag för fel?

<SCRIPT LANGUAGE="JavaScript">
funOppnaSidaNyttFonster("x","test2.asp")

function funOppnaSidaNyttFonster(openInThisWindow,openThisIncommingUrl){
	objPopupWindow = window.open(openThisIncommingUrl,openInThisWindow,"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=800"); 
	//objPopupWindow.focus();

	testParent1();	
}

function testParent1() {
if (window.opener != null && !window.opener.closed)
alert("OPEN");
else 
alert("CLOSED");
}	
	
function testParent2() {
if (typeof opener != 'undefined')
alert("OPEN");
else 
alert("CLOSED");
}
	
function testParent3() {
if (!opener)
alert("CLOSED");
else 
alert("OPEN");
}

</script>

OPEN POUPUP WINDOW 2

<a href="Javascript:testParent1();">test</a>
Danne VMedlem sedan aug. 20068 090 inlägg
#2

Varför vill du att den ska verifieras? Är det för att du vill se om folk har titta på den i din statistik sedan, eller vad?

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#3

Just nu labbar jag mest. Men en tanke är att visa information om att popupblockern måste fixas. Denna text behöver bara visas om popupfönstret inte har öppnats.

Sedan retar jag mig på att jag gör något fel. Andra verkar få funktionerna ovan att fungera men inte jag.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Window.opener använder du inte på samma sida som du öppnar fönstret. I stället använder du det i popupsidan.

Titta på objektet objPopupWindow och dess egenskaper, t.ex. closed.

spangoMedlem sedan juni 20008 205 inlägg
#5

Vi har pratat lite om det i den här tråden: http://www.webforum.nu/showthread.php?p=1347298

Men det är inte speciellt konstigt att den alltid säger "closed", du kollar window.opener vilket är en egenskap i det fönstret som öppnats, och koden körs ju i fönstret som öppnar. Det du egentligen vill göra är att kolla returvärdet från window.open, den returnerar null om inte ett nytt fönster öppnats:

var newWindow = window.open([I]parametrar[/I]);
if (newWindow) {
  alert("Fönstret öppnades");
} else {
  alert("Popup-blocker igång");
}
Mattias NordinMedlem sedan dec. 20051 056 inlägg
#6

Tackar för hjälpen. Spangos exempel fungerar bra. Jag blandar ihop saker och kan inte grunderna här.

Lite grundläggande, vad är det för skillnad på:

if (newWindow){...

och

if (newWindow == true){...

TroxyMedlem sedan mars 20041 505 inlägg
#7

Det är ingen skillnad. Om (newWindows == true) gäller så är newWindow i sig är ett booleanskt värde, vilket gör att det kan användas direkt i en if-sats, jämförelsen är onödig.

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#8

Det jag blev förvånad över var att varianten (newWindows) ovan fungerar medans (newWindows == true) inte gjorde det. Den sista varianten gav samma resultat oavsätt om fönstret öppnades eller ej. ?

jawbreakerMedlem sedan jan. 2003296 inlägg
#9

window.open() returnerar inte true eller false, den returnerar istället en referens till det nya fönstret som öppnas (om det går bra), eller null (om det går dåligt).

Så om man nu nödvändigtvis vill ha med något villkor att jämföra mot i if-satsen borde det bli:

if (newWindow != null)
	alert("Fönstret öppnades");
Mattias NordinMedlem sedan dec. 20051 056 inlägg
#10

OK. Tackar.

colioneMedlem sedan juni 20014 421 inlägg
#11

jawbreaker skrev:

window.open() returnerar inte true eller false, den returnerar istället en referens till det nya fönstret som öppnas (om det går bra), eller null (om det går dåligt).

Så om man nu nödvändigtvis vill ha med något villkor att jämföra mot i if-satsen borde det bli:

if (newWindow != null)
	alert("Fönstret öppnades");

Fast om man nu nödvändigtvis ska ha något vilkor att jämföra mot i if-satsen borde det bli:

if (newWindow !=[red]=[/red] null)
	alert("Fönstret öppnades");

Då sker ingen typkonvertering så det blir både snabbare och säkrare.

134 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)