Toon posts:

[JS] - Window.self.close werkt niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een aspx pagina die ik wil sluiten als er op een button wordt geklikt. Even gegoogled en ik kwam 2x de volgende code tegen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void CancelButton_Click(object sender, System.EventArgs e)
{
    CloseWindow();
}
private void CloseWindow()
{
    string scriptKey = "CloseWindow";
    if ( !this.IsStartupScriptRegistered(scriptKey) )
    {
        StringBuilder sbScript = new StringBuilder();
        sbScript.Append("\n");
        sbScript.Append("<script language=\"JavaScript\" type=\"text/javascript\">\n");
        sbScript.Append("<!--\n");
        sbScript.Append("var windowObject = window.self;\n");
        sbScript.Append("\n");
        sbScript.Append("windowObject.opener = window.self;\n");
        sbScript.Append("windowObject.close();\n");
        sbScript.Append("// -->\n");
        sbScript.Append("</script>\n");
        this.RegisterStartupScript(scriptKey, sbScript.ToString());
    }  
}

Echter, er gebeurt niets 8)7

Ook als ik de if-statement weghalen, gebeurt er nog niets.

De search bood ook weinig soelaas. Wat doe ik fout?

  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

window.close() :?

Zou je volgende keer mischien ook alleen de javascript neer kunnen zetten. In een bak met aspx doorkijken en bedenken wat er geparsed zou kunnen worden is niet bepaald handig.

[ Voor 85% gewijzigd door disjfa op 21-09-2005 09:59 ]

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

Topicstarter
Heb ik ook al in de JS erbij gezet, helpt ook niet.

Edit: de JS dus :):

code:
1
2
3
4
5
6
7
<script language="JavaScript" type="text/javascript">
    <!--
        var windowObject = window.self;
        windowObject.opener = window.self;
        windowObject.close();
    // -->");
</script>

[ Voor 82% gewijzigd door Verwijderd op 21-09-2005 10:04 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Wat werkt niet? Wat komt er in je gegenereerde html terecht? Heb je dit javascript ook al los in een html pagina geprobeert?

--edit

Hoezo 'bijgezet'? de close methode wordt al aangeroepen op het window. Heb je eigenlijk wel een idee wat je precies aan het doen bent?

[ Voor 38% gewijzigd door Janoz op 21-09-2005 10:01 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op woensdag 21 september 2005 @ 10:00:
Wat werkt niet? Wat komt er in je gegenereerde html terecht? Heb je dit javascript ook al los in een html pagina geprobeert?

--edit

Hoezo 'bijgezet'? de close methode wordt al aangeroepen op het window. Heb je eigenlijk wel een idee wat je precies aan het doen bent?
Wat niet werkt? Ik druk op de knop, maar er gebeurt niets... Heb het nog niet in een andere html-pagina geprobeerd, dat kan ik zo wel even proberen. Aangezien de javascript-code runtime wordt gegenereerd, kan ik dat niet echt bekijken.

Ik gebruik nu window.self.close, ik heb dus ook al window.close geprobeerd :). Dat bedoel ik met bijgezet.

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Je maakt het ook veels te ingewikkeld:
JavaScript:
1
2
3
<script type="text/javascript">
       window.close();
</script>

Je krijgt natuurlijk wel de vraag of je echt het venster wilt sluiten, dat is een ingebouwde beveiliging van je browser.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Topicstarter
Ik ga even :r Ik ga er gewoon vanuit dat VS.net eventhandlers aan de initializecomponent toevoegt als je dubbelklikt op een button in de designer... Niet dus.

Ik had even een breakpoint bij die functie gezet, kwam hij dus niet, aangezien de eventhandler niet werd toegevoegd. Er was dus niets mis met de JS-code.

Een ieder bedankt voor de snelle replies!

/Edit: het werkt nu, maar krijg geen beveiligingsmelding? Het venster wordt gewoon gesloten :).

[ Voor 13% gewijzigd door Verwijderd op 21-09-2005 10:09 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Aangezien de javascript-code runtime wordt gegenereerd, kan ik dat niet echt bekijken.
Druk in je browser op 'view source' en je kunt exact zien welke javascript er gegenereerd ;).

Dat je geen beveiligingsmelding krijgt komt door de windowObject.opener = window.self;. Dit truukje omzeilt die beveiliging.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Natuurlijk heb ik view source gedaan... Echter, hierin staat geen javascript. De javascript wordt gegenereerd dat op de button wordt geklikt en vervolgens wordt dit als parameter aan Page.RegisterStartupScript doorgegeven.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 24-04 11:26
Indien het venster door een ander venster is geopent krijg je geen melding.
Indien het venster een venster is welke door de gebruiker zelf is geopent, krijg je wel een melding.

Vensters welke jij dus eerst met javascript opent, kun je late rook probleemloos sluiten,

Verwijderd

Topicstarter
En het window wat ik sluit is geopend mbv JS :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op woensdag 21 september 2005 @ 10:19:
Natuurlijk heb ik view source gedaan... Echter, hierin staat geen javascript. De javascript wordt gegenereerd dat op de button wordt geklikt en vervolgens wordt dit als parameter aan Page.RegisterStartupScript doorgegeven.
Dat daarin geen javascript stond was waarschijnlijk juist het probleem. Nu werkt het wel? Kijk nu nog eens. Waarschijnlijk staat het er nu wel. Bij het ontwikkelen van webapplicaties is het belangrijk te beseffen wat het verschil tussen clientside en serverside is. Je browser heeft geen enkele notie wat er precies allemaal op de server gebeurt. Het drukken op een knop zorgt er niet ineens voor dat er van alles in je html gaat veranderen door wat de server wilt tenzij er een nieuwe pagina wordt opgevraagd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Dat snap ik wel, jscript is clientside. Echter, als ik de src opvraag en zoek op javascript is dit de enige regel:

<meta name="vs_defaultClientScript" content="JavaScript">

Verder, de button staat dus op een form en heeft als type submit. De form heeft als action de huidige pagina. Ik denk dat ik wel weet wat er gebeurt, nl. de form wordt gesubmit en dan wordt de jscript gegenereerd. Echter, die kan ik niet zien, aangezien het formulier dan al weg is :).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Ah ok, er wordt dus eigenlijk een nieuwe pagina opgeroepen die zich vervolgens sluit. Nee, dan is het javascript inderdaad niet in de pagina zelf te vinden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1