paraxeMedlem sedan apr. 2004298 inlägg Hej
Jag har ett script som kan vara tungladdat.
Så därför öppnar jag en popup som ber användaren att ha tålamod.
Popupen öppnar jag på knappen som triggar scriptet:
function alertWindow(url, windowName, myHeight, myWidth)
{
window.open(url,windowName,"scrollbars=1...osv...
När scriptet är klart skriver jag ut <body> taggen och kan således köra en body onLoad.
Men vad skriver jag för att stänga popupen som jag öppnade?
Mvh
Pär
paraxeMedlem sedan apr. 2004298 inlägg Jesper:
Då stängs ju scriptet som gör beräkningarna..
Jag vill stänga popupen som scriptet öppnade.
Mvh
Pär
Jesper TMedlem sedan nov. 20017 144 inlägg Ok, men om du öppnar ex så här:
alertWindow('sida.htm', 'myWindow', 500, 600);
så kan du kanske stänga med:
window.myWindow.close();
paraxeMedlem sedan apr. 2004298 inlägg Så här ser koden ut för att öppna popupen.
onclick=" alertWindow(sida.asp', mittNamn, 300, 100);
Kör jag window.mittNamn.close(); -> får jag att mittNamn är null eller inte ett objekt.
Mvh
Pär
Jesper TMedlem sedan nov. 20017 144 inlägg var windowName;
function alertWindow(url, myHeight, myWidth)
{
windowName= window.open(url, "windowName" ,"scrollbars=1 osv...")
}
paraxeMedlem sedan apr. 2004298 inlägg Jesper har du testat denna kod?
/pär
Jesper TMedlem sedan nov. 20017 144 inlägg Ja, visst. Funkar kanoon.
paraxeMedlem sedan apr. 2004298 inlägg Hej igen.
Jag får fortfarande inte det att fungera.
Jag har kontrollerat att fönstret jag öppnar heter "windowName".
Med koden:
document.write("fönstret heter: "+window.name
Så här ser koden ut för att stänga fönstret.
<script>
window.onload = window.windowName.close()
</script>
felmess: window.windowName är Null eller inte ett objekt.
Mvh
Pär
Jesper TMedlem sedan nov. 20017 144 inlägg <script type="text/javascript">
<!--
var windowName;
function alertWindow(url, myHeight, myWidth)
{
windowName = window.open(url, "windowName" ,"scrollbars=1 height="+ myHeight +" width="+ myWidth +"")
}
window.onload = windowName.close();
//-->
</script>
icaaqMedlem sedan okt. 20005 273 inlägg Jag tar över detta problem ;)
Vi har dessa två funktioner i Javascript.js
[red]
function alertWindow(url, myHeight, myWidth)
{
window.open(url,"sendingMails","scrollbars=1,resizable=1,width="+ myHeight +",height="+ myWidth +",left=300,top=200");
}
function closeAlertWindow()
{
window.sendingMails.close()
}
[/red]
Följande händer.
1. På en button körs detta.
[red]
<input type="button" name="action" value="Skicka nyhetsbrev" onclick=" alertWindow('alertSending.asp', 300, 100); location.href='sendNewsletter.asp?nlid=1';">
[/red]
2. i sendNewsletter.asp finns detta
[red]
<html>
<head>
<script language="javascript" src="/inc/Javascript.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
window.onload = closeAlertWindow()
//-->
</script>
</head>
</html>
[/red]
Men jag får window.sendingMails är null eller inte ett objekt
Men om jag som sagt skriver ut fönsternamnet i popupen så här
[red]
<script>
document.write("fönstret heter: "+window.name)
</script>[/red]
så skriver den ut att fönstret heter : fönstret heter: sendingMails
Vad fasiken vara fel??
mv icaaq
icaaqMedlem sedan okt. 20005 273 inlägg Kan jag på något sätt felsöka detta? Jag hade nån tanke på att om man kunde loopa igenom alla fönster som fanns i JavaScript. Och då se om fönstret finns ?
mv icaaq
Du kan inte bara skriva window.objektnamn. Precis som ovan måste du tilldela en fönsterreferensen (= Det som window.open skickar tillbaka) till en variabel och använda detta. En korrekt kod kan t ex se ut så här:
[b]tempWin = null;[/b]
function alertWindow(url, myHeight, myWidth)
{
[b]tempWin = [/b]window.open(url,"sendingMails","scrollbars=1,resizable=1,width="+ myHeight +",height="+ myWidth +",left=300,top=200");
}
function closeAlertWindow()
{
[b]if (tempWin)
if (!tempWin.closed)
tempWin.close()[/b]
}
window.onload = [b]closeAlertWindow[/b];
Sen en kommentar på flerapersoners "window.onload ="-rader. Man ska inte ha med () på slutet när man skriver så.
Har man med () på slutet så körs funktionen, och window.onload sätts till det eventuella värde som returneras från funktionen.
Har man inte med () på slutet så skapas en referens till funktionen och läggs som window.onload (Vilket är det man normalt vill)
Woops, icaaq, ser nu ett annat problem. Du försöker komma åt fönstret från en ny sida, då är ju alla gamla javascript-variabler borta... Så då kan man göra så här istället:
// Första sidan
function alertWindow(url, myHeight, myWidth)
{
window.open(url,[B]"sendingMails"[/b],"scrollbars=1,resizable=1,width="+ myHeight +",height="+ myWidth +",left=300,top=200");
}
// sendNewsletter.asp
window.onload = function()
{
winRef = window.open("about:blank", [B]"sendingMails"[/b]);
winRef.close();
}
På detta sätt kan du kolla genom alla fönster för att se om det finns ett fönster vid namn sendingMails. Gör det det skapas en referens till fönstret i winRef, som du sedan kan stänga.
Nackdelen med denna metod är att om fönstret inte fanns sedan innan kommer ett nytt fönster att skapas, vilket dock inte spelar någon roll här eftersom det ändå ska stängas direkt efteråt.
paraxeMedlem sedan apr. 2004298 inlägg Uppskattningen kan ej beskrivas med ord.
Men ett tack är en bit på vägen!
Så,
- Tack
Hälsningar Pär och Icaaq