Javascript

Wie binde ich generell Javascript ein ?

Zum Einleiten der Scriptes:

<script language="JavaScript" type="text/javascript">

Anschließend Kommentar, damit nicht einige Browser, die Javascript nicht verstehen, nicht durcheinander kommen:

<!–

–>
</script>

Das Tag <noscript>… </noscript> wird immer dann ausgeführt, wenn kein Javascript eingeschaltet ist, der Browser dieses aber versteht. Hier dürfen natürlich nur HTML-Anweisungen stehen und keine Javascript-Befehle.

 

Kann ich ein Javascript auch direkt beim Laden und beim Schliessen auszuführen`?

Um ein Javascript direkt beim Laden bzw. beim Schliessen oder Verlassen einer Seite auszuführen, muss man zuerst eine Funktion schreiben.

<script language="JavaScript" type="text/javascript">
<!–
    function navbarladen()
    {
        top.frames.navigationsframe.location.href="aktuell.htm";
    }

    function navbarentladen()
    {
        top.frames.navigationsframe.location.href="navigation.htm"
    }
//–>
</script>
 

Die Funktion setzt in einem Frame die aktuelle Seite bzw. die Navigationsseite neu. Damit dieses nun geschieht, muss man im sog. <body>-Tag der eigenen Seite noch sagen, wann sie was ausführen muss:

<body onload="navbarladen()" onunload="navbarentladen()">

Hierbei steht "onload" für das Laden der Seite und "onunload" für das Verlassen der Seite.

 

Ich möchte innerhalb eines Frames bei einem Klick gleich zwei Frames geändert haben. Wie geht das ?

Um zwei Framesseiten auf einmal zu ändern, kommt man um den Einsatz von Javascript nicht herum. Statt einer zu ladenen Seiten muss man beim Link ein Javascript eingeben. Dieses wird aufgerufen, wenn auf den Link geklickt wird.
Der Befehl heißt onlick="". In den nun folgenden Beispiel müssen Sie nur noch die Zielnamen ändern, d.h. statt "navigationsframe" und "hauptframe" müssen dort Ihre Ziele stehen.

onlick="top.frames.navigationsframe.location.href='aktuell,htm'; top.frames.hauptframe.location.href='aktuelles,htm';"

Probleme existieren nun nur noch in der History Ihres Browsers. Wenn der Anwender nun nämlich zurück will, muss er zweimal (!) auf den "Zurück"-Button klicken.

 

Ich möchte verhindern, dass jemand eine meiner Frameseiten direkt aufruft, d.h. ohne das Frameset (auf Frameverwaltungsseiten genannt).

Bei vielen Suchmaschinen werden alle Seiten des Frames nach Inhalten durchsucht, indiziert und gespeichert. Beim Aufruf wird nun zwar die innere Frameseite dargestellt, nicht jedoch das sog. Frameset, d.h. die Frameset außen herum. Dieses kann man mit Hilfe von Javascript erreichen, in dem man beim Laden der Seite prüft, ob es bereits eine Seite außen herum gibt.

<script language="JavaScript" type="text/javascript">
<!–
function ScriptLaden()
{
    if(!top.frames.length>0) window.replace='index.htm';
}
//–></script>

Diese Funktion muss nun aus dem <body>-Tag aufgerufen werden:

<body onload="ScriptLaden()">

Weitere unsortierte und unkommentierte Tipps:

  • Prüfen, ob Seite ausserhalb des Framesets geladen wurde:
    <script language="JavaScript" type="text/javascript">
    <!–
        if (!top.frames.length > 0) windows.location.href ='index.htm';
    //–>
    </script>

  • Wenn Seite ausserhalb des Framesets geladen wurde, dann wird History geändert:
    <script language="JavaScript" type="text/javascript">
    <!–
        if (!top.frames.length > 0) windows.location.replace ("index.htm");
    //–>
    </script>

  • verhindern, dass Seite in einem fremden Frameset aufgerufen wird
    <script language="JavaScript" type="text/javascript">
    <!–
        if (!top.frames.length > 0) windows.location.href = self.location;
    //–>
    </script>

  • CSS einbinden
    <script language="JavaScript" type="text/javascript">
    <!–
        document.write('<link rel="stylesheet" type="text/css" xhref="vorlage.css">');;
    //–>
    </script>

  • Background einbinden
    <style type="text/css">
    <!–
    body
    {
        background-image: url(images/navi.jpg);
        background-color: #FFFFFF;
        background-repeat: no-repeat ;
    }
    –>