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>
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.
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");
}
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.
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. ?
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");
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.
263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2