MicMarx: Window.open mit function

HI,

ich habe meine Problem immer noch nicht gelöst, das ich ein neues Fenster öffne, ich habe es jetzt mal mit einer JS function getestet, aber selbst die funktioniert auch nicht.

Hier mein Code:

Das Skript im <head>

<script type="text/javascript">
function FensterWitz ("service/witz.htm") {
  FensterWitz = window.open("service/witz.htm", "Witz des Tages", "width=300, height=300, scrollbars=no");
  FensterWitz.focus();
}
</script>

Der Link im <body>

<a href="datei2.htm" onclick="FensterOeffnen(this.href); return false">

Es treten immer wieder Fehler auf der Seite auf und der Link wird nur im aktuellen fenster geöffnet und nicht in einem neuen.

Woran hängt es denn?

Grüsse
MicMarx

  1. Hi,

    ich habe meine Problem immer noch nicht gelöst, das ich ein neues Fenster öffne,

    warum willst Du das überhaupt?

    ich habe es jetzt mal mit einer JS function getestet, aber selbst die funktioniert auch nicht.

    Und wie lautet die Fehlerbeschreibung?

    function FensterWitz ("service/witz.htm") {

    Lass mich raten: Die erste Fehlermeldung, die in Deiner Fehlerbeschreibung vorkommt, sagt aus, dass dies hier ungültig ist. Ja, richtig. Wo hast Du so eine Syntax her?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. google...

      ich hab garkeine Fehlerbeschreibung, ich sehe nur in der Statusleiste im IE "Fehler auf der Seite"

      1. Hi,

        google...

        wem?

        ich hab garkeine Fehlerbeschreibung,

        Richtig, die hast Du nicht. Dabei bist Du es, der sie haben _muss_. Eine Fehlerbeschreibung kommt von _Dir_.

        ich sehe nur in der Statusleiste im IE "Fehler auf der Seite"

        Mit der Möglichkeit, Details anzusehen. Außerdem gibt es noch eine Vielzahl richtiger Browser, die gesprächiger sind.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    function FensterWitz ("service/witz.htm") {

    dazu hat dir Cheatah schon was gesagt...

    FensterWitz = window.open("service/witz.htm", "Witz des Tages", "width=300, height=300, scrollbars=no");

    [x] du möchtest angucken, was gültige Fensternamen sind.

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
  3. Lieber MicMarx,

    Der IE sagt mir als Fehler "bezeichner erwartet" in Zeile 20, Zeichen 23.

    Dein Problem hat zunächst nichts mit HTML zu tun, sondern mit Javascript. Wenn Du Dich etwas tiefer in die Materie eingearbeitet hast, dann hast Du sicherlich auch gelernt, dass man an in Javascript definierte Funktionen Parameter übergeben kann. Nachzulesen hier: Funktionen in Javascript definieren

    Es ist außerdem möglich, einer Variablen als Wert eine ganze Funktion, oder auch nur eine Zahl oder einen String zuzuweisen - und das jederzeit. In Deinem Code definierst Du eine Funktion namens "FensterWitz". Das bedeutet, dass in Javascript eine Variable mit dem Namen "FensterWitz" angelegt wurde, der eine Funktion als Wert gegeben wurde. Genauer betrachtet handelt es sich bei FensterWitz um ein sogenanntes Objekt - aber das ist im Moment nicht so wichtig.

    Wichtig ist, dass Du innerhalb der Funktion dieser Variablen "FensterWitz" etwas neues zuweist, nämlich eine Referenz auf das neu geöffnete Fenster. Du hast auch nicht das Schlüsselwort "var" davor notiert, sodass die global im Fenster gültige Variable (in der gerade die Funktion steckt) gemeint ist. Damit ist nach dem ersten Aufruf der Funktion diese nicht mehr definiert! Mit diesem "var" hätte Deine Funktion eine eigene nur innerhalb in ihr gültige (das nennt man "lokale") Variable mit demselben Namen definiert, sodass Deine Funktion selbst nicht überschrieben worden wäre.

    function FensterWitz ("/service/witz.htm") {

    Das ist aus der Sicht des Interpreters ungültig, denn in der Klammer muss ein Variablenname stehen; bei Dir steht da ein String. Das widerspricht aber der erwarteten Syntax.

    FensterWitz = window.open("/service/witz.htm", "Witz des Tages", "width=300, height=300");

    Warum schreibst Du hier für die methode open() feste Werte hinein, wenn Du doch Deiner Funktion "FensterWitz" Parameter übergeben willst? Da widersprichst Du Dir in Deinem Konzept!

    Dass der von Dir vergebene Fenstername ungültig ist, das hat man Dir ja bereits gesagt.

    Du kannst entweder
    (a) Deine Funktion variabel (mit einer Parameterübergabe)
        oder
    (b) "hartcodiert" (mit festen unveränderlichen Werten)
    schreiben, aber beides auf einmal ist nicht logisch!

    Fall (a): Deine Funktion bekommt einen Wert übermittelt, den Du "abfängst" und ihn in eine Variable steckst, die Du dann später auch verwendest!
    Beispiel:

    function FensterWitz (ZielURL) {  
        var FensterWitzWindow = window.open(ZielURL, "Witz_des_Tages", "[...]");  
        FensterWitzWindow.focus();  
    }
    

    Fall (b): Deine Funktion hat ihre festen Werte und braucht keine Parameter übermittelt zu bekommen.
    Beispiel:

    function FensterWitz () {  
        var FensterWitzWindow = window.open("service/witz.htm", "Witz_des_Tages", "[...]");  
        FensterWitzWindow.focus();  
    }
    

    <a href="service/witz.htm" onclick="FensterWitz(this.href); return false">

    Hier wird Deiner Funktion ein Parameter (nämlich das Verweisziel dieses Links) übergeben. Brauchst Du diese Parameterübergabe (je nach Konzept) tatsächlich noch?

    <font size="2" face="Tahoma"><strong>Witz des Tages</strong></font></a>

    Iiigitt! Warum tust Du Dir dieses FONT-Gesummse an? Heute haben wir doch CSS, mit dem man das alles viel besser regeln (und später eleganter für eine komplette Webpräsenz wieder ändern) kann...

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.