Vraag & Antwoord

Webprogrammeren & scripting

Ongewild nieuw venster bij onClick in Javascript

Anoniem
J. de Boer
7 antwoorden
  • Ben wat vingeroefeningen aan het doen in Javascript, en stuit daarbij op het volgende probleem:

    Een html-pagina met een paar aanklikbare links die een aantal Javascriptfuncties activeren. Met buttons werkt het idem dito. Loopt op zich helemaal naar verwachting, alleen één klein probleempje, de pagina opent bij het "onClick" in een nieuw venster. Het gevolg is dat alleen de door die scriptfuncties opgeroepen acties (writeln("nnnn") etc. in dat venster verschijnen, en de andere delen van de html-pagina niet, en dus ook niet de buttons of de links in de oorspronkelijke pagina. Zeker met een knop "Opnieuw" is dit natuurlijk wel gewenst, want nu kan dat "Opnieuw" maar éénmaal. Ongetwijfeld zal iemand dit ook wel eens zijn tegengekomen, en wellicht staat de oplossing ook wel in de boeken, maar ik kan het niet vinden. Iemand een idee?

    Jan de Boer
  • Je probleem is me niet helemaal duidelijk. Wil je niet dat er een nieuw venster geopend wordt? Of is er een ander probleem, en zo ja wat wil je dan precies bereiken?
    Daarnaast zou het wel handig zijn als je wat relevante code laat zien van wat je hebt. Zonder wordt het een beetje lastig om te bepalen wat er mis gaat.
  • [quote:bbd9f5591c="Annie"]Je probleem is me niet helemaal duidelijk. Wil je niet dat er een nieuw venster geopend wordt? Of is er een ander probleem, en zo ja wat wil je dan precies bereiken?
    Daarnaast zou het wel handig zijn als je wat relevante code laat zien van wat je hebt. Zonder wordt het een beetje lastig om te bepalen wat er mis gaat.[/quote:bbd9f5591c]Ik wil inderdaad dat er niet een nieuw venster wordt geopend. Het gaat om een al wat eerder gemaakt Jafascript in een html-pagina. In dat Jafascript worden berekeningen uitgevoerd, en de parameters ervoor worden met een prompt ingevoerd. Loopt verder geheel naar verwachting. Met simpel F5 wordt de procedure herhaald.

    Maar dat laatste wil ik gewoon wat verfraaien. Het gaat om een kalender ( overigens niet relevant). Onderaan de html-pagina staan daartoe drie links die verwijzen naar drie functies binnen dat Jafascript, tw.: "Opnieuw" (zou equivalent moeten zijn aan F5), "Vorige" en "Volgende".
    [code:1:bbd9f5591c]<center>
    <A HREF="javascript:vorige()">Vorige maand</A>&nbsp;&nbsp;<A HREF="javascript:opnieuw()">Opnieuw</A>&nbsp;&nbsp;<A HREF="javascript:volgende()">Volgende maand</A></center>[/code:1:bbd9f5591c]
    De Jafascript functies waarheen wordt verwezen zijn:[code:1:bbd9f5591c]function opnieuw() {
    for (i=1; i <= 42; i++) {dw[i]= " "; Fe$[i] = " "};
    invoer(); start(); display()};

    function volgende() {
    for (i=1; i <= 42; i++) {dw[i]= " ";Fe$[i] = " "};
    M=M+1; if (M>12) {J=J+1; M=1};
    start(); display()};

    function vorige() {
    for (i=1; i <= 42; i++) {dw[i]= " ";Fe$[i] = " "};
    M=M-1; if (M==0) {J=J-1; M=12};
    start(); display()};
    [/code:1:bbd9f5591c]Werkt vlekkeloos, maar helaas maar één keer, want zoals ik schreef verschijnt het nieuwe resultaat niet in de oorspronkelijke html-pagina, maar in een nieuw venster, dus zonder die html-links en natuurlijk ook zonder verdere opmaak die eventueel op die html-pagina staat. Enkel het resultaat van dat Javascript wordt nu getoond, in een verder leeg venster. Geen probleem om wakker van te liggen, maar het intrigeert me.

    Jan de Boer
  • Heb je het geheel ergens online staan zodat we een kijkje kunnen nemen?

    p.s. het is ja[b:8f0ea85ef6]v[/b:8f0ea85ef6]ascript :D
  • Inderdaad een typefoute, elders staat wel javascript, evenals in de titel. Kan gebeuren.

    Ik heb het niet on-line staan. Maar dat lijkt me ook niet nodig. Zelfs met een heel simpel script treedt dit verschijnsel al op:[code:1:7465deb2a6]
    <html>
    <head>
    <body>
    <SCRIPT LANGUAGE="JavaScript">
    document.bgColor = "yellow";
    function execute() {
    document.writeln("<PRE>Dit script dient alleen voor demonstratie van het probleem\n\n");
    }
    execute();

    function opnieuw() {
    execute();
    document.writeln("Er wordt nu door deze functie een tekstregel toegevoegd,\nmaar zoals je ziet is de oorspronkelijke html-opmaak verdwenen.") ;}

    </script>
    <center>
    <A HREF="javascript:opnieuw()">Opnieuw</A></center>
    </body>
    </html>
    [/code:1:7465deb2a6]
    Moeizaam door het hele script van me grasduinen is dus niet nodig, dit simpele voorbeeld wat ik even heb gemaakt demonstreert precies wat er aan de hand is. Is dus iets heel fundamenteels, en er moet een oplossing voor zijn dacht ik.

    Jan de Boer
  • Er wordt geen nieuwe pagina geopend, de bestaande pagina wordt overschreven.
    Dat komt omdat je document.write gebruikt.

    Document.write is eigenlijk alleen handig als je het laat uitvoeren op het moment dat het document wordt ingeladen.
    Als je het daarna gebruikt wordt alle oorspronkelijke content gewist.
    Wat jij eigenlijk zou doen is met dom-methodes werken (of .innerHTML die virtueel in elke browser werkt). Deze overschijven niet de bestaande content.
    Hier staan er wel een heleboel vermeld:
    http://www.quirksmode.org/index.html?/dom/w3c_core.html

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.