Andicgn: JavaScript-Aufruf in JavaScript-Abfrage realisieren?

Hoffe, Ihr könnt mir weiterhelfen:-)

Auf meinen Internetseiten steht folgende Ladeanweisung für ein Javascript, dass Menüeinträge an bestimmte Bildschirmpositionen setzt:

<SCRIPT language=JavaScript src="menu_array_Main_DE.js" type="text/javascript"></SCRIPT>

Jetzt möchte ich aber abhängig von der Bildschirmauflösung des Besuchers eine bestimmte JavaScript-Datei laden:

<=800 : menu_array_Main_DE.js
=1024 : menu_array_Main_1024.js
=1280 : menu_array_Main_1280.js

Habe mal dieses Skript (aus Verzweiflung) ausprobiert, funktioniert natürlich nicht:

<script language=JavaScript type="text/javascript">
<!--
if (window.screen)
{
var w=screen.width
if (w<=800)
{
<SCRIPT language=JavaScript src="menu_array_Main_800.js" type="text/javascript"></SCRIPT>
}
else if (w=1024)
{
<SCRIPT language=JavaScript src="menu_array_Main_1024.js" type="text/javascript"></SCRIPT>
}
else if (w=1280)
{
<SCRIPT language=JavaScript src="menu_array_Main_1280.js" type="text/javascript"></SCRIPT>
}
}
//-->
</script>

Könnt Ihr mir sagen, wie ich die Verschachtelung hinbekomme? Falls es nicht anders geht, wäre ich mit einer PHP-Lösung auch zufrieden:-).

  1. Hallo erstmal!

    schreibe die Anweisungen (Inhalt der einzelnen Datein), die Du nachladen willst, statt der <script>-Elemente in die einzelnen if-else-Anweisungsblöcke.

    Gruß aus Berlin!
    eddi

    1. schreibe die Anweisungen (Inhalt der einzelnen Datein), die Du nachladen willst, statt der <script>-Elemente in die einzelnen if-else-Anweisungsblöcke.

      Ne, geht nicht! Die Anweisungen der einzelnen Dateien sind extrem umfangreich. Das würde meine Seite von der Größe her sprengen.

      1. Re:

        Ne, geht nicht! Die Anweisungen der einzelnen Dateien sind extrem umfangreich. Das würde meine Seite von der Größe her sprengen.

        Dann stellt sich die Frage nach dem tatsächlichem Nutzen im Hinblick auf die Größe der Javascriptdaten - aber das nur am Rande.

        Ich gehe davon aus, daß die Einzelen Scripte auf jedem Dokument erneut geladen werden sollen. Wenn dem so ist, so solltest Du dafür Sorge tragen, daß die Javascriptdatein nur ein einziges mal geladen werden müssen:

        ETag => If-None-Match (FileETag)
        Expires (ExpiresByType)
        Cache-Control (mod_header)

        Anderfalls gibt es noch eine Möglichkeit, Daten mittels Javascript in Dokumente dynamisch nachzuladen, aber der wird nur von neusten Browsern unterstützt.

        Gruß aus Berlin!
        eddi

  2. Hallo Andicgn,

    ich vermute mal, dass sich die drei Scripte nur durch ein paar Zahlen, die die Größe betreffen, unterscheiden. Ersetze sie durch Variablen, die du entsprechend der Größe setzt.

    Einige Anmerkungen zu deinen Abfragen:

    • Der Vergleich geht mit a==b. a=b ist eine Zuweisung.
    • Frage die Browserfenstergröße ab, nicht die Bildschirmgröße. Nicht alle Besucher stellen full screen ein.
    • Frage nicht auf ==1024 ab, setze statt dessen Bereiche: kleiner 900, 900-1100, größer 1100 oder so.

    Auf der Seite <physik.uni-muenster.de> wird die Bildgröße anhand der Browserfensterbreite ermittelt. Browser ohne JS oder Browser, die diese Ermittlung der Fensterbreite nicht unterstützen, erhalten die mittlere Größe.

    Gruß, Jürgen

  3. Vielen Dank für Eure Hilfe! Die Hinweise sind nützlich, aber leider bin ich meiner Lösung nicht näher gekommen.

    Wie gesagt, suche ich die Möglichkeit auf meiner Internetseite nachfolgende Funktion sinngemäß auszuführen:

    <script language=JavaScript type="text/javascript">
    <!--
    if (window.screen)
    {
    var w=screen.width
    if (w<=800)
    {
    src="menu_array_Main_800.js"
    }
    else if (w=1024)
    {
    src="menu_array_Main_1024.js"
    }
    else if (w=1280)
    {
    src="menu_array_Main_1280.js"
    }
    }
    //-->
    </script>

    Habe es bereits von meiner ersten Version etwas abgewandelt. Ich frage mich wirklich, warum das nicht funktioniert?!

    HINWEIS: Die Abfrage nach der Bildschirmauflösung funktioniert bereits (auch mit einem einzelnen =). Aber die Anweisung entsprechend der Auflösung den src="....js" zu nehmen wird ignoriert.

    P.S.: Sobald das funktioniert, werde ich das Skript statt der Auflösung die Browserfensterbreite berücksichtigen lassen und == statt = verwenden. Deshalb danke für die bisherigen Hinweise.

  4. Alternativ würde ich es auch so machen können (wenn es denn funktionieren würde):

    <script language=JavaScript type="text/javascript">
    <!--
    function Aufloesung()
    {
    var w = "";
    if (window.screen)
    {
    var w=screen.width
    }
    return (w);
    }
    //-->
    </script>

    <SCRIPT language=JavaScript src="mmenu_Main_"+w+".js" type="text/javascript"></SCRIPT>

    Vielleicht könnt Ihr mir mit dem Code weiterhelfen (korrigieren)?

    1. Hallo AndiCGN,

      bevor du weitermachst, solltest du dich mit den Grundlagen von Javascript beschäftigen. Der Unterschied zwischen Vergleich und Zuweisung ist elementar. Und wenn du einer Variablen src einen String zuweist, enthält sie hinterher den String. Warum sollte dadurch irgendwer irgendwas neu laden?

      Du kennst den Spruch: 2 Stunden rumprobieren ersparen einem 10 Minuten Handbuchlesen.

      Gruß, Jürgen

  5. Auf meinen Internetseiten steht folgende Ladeanweisung für ein Javascript, dass Menüeinträge an bestimmte Bildschirmpositionen setzt:

    <SCRIPT language=JavaScript src="menu_array_Main_DE.js" type="text/javascript"></SCRIPT>

    Jetzt möchte ich aber abhängig von der Bildschirmauflösung des Besuchers eine bestimmte JavaScript-Datei laden:

    <=800 : menu_array_Main_DE.js
    =1024 : menu_array_Main_1024.js
    =1280 : menu_array_Main_1280.js

    Das die Bildschirmauflösung nicht unbedingt im zusammenhan mit der Browsergröße steht ist dir klar?
    Das es mit CSS die Möglichkeit gibt Elemente relativ zu positionieren auch?

    Struppi.

    1. Sieht interessant aus, könnte ich evtl. mal gebrauchen. Danke für den Tipp (habe jetzt eine Lösung / siehe Posting von Peter).

  6. Hi,

    <script language=JavaScript type="text/javascript">
    <!--
    if (window.screen)
    {
    var w=screen.width
    if (w<=800)
    {
    <SCRIPT language=JavaScript src="menu_array_Main_800.js" type="text/javascript"></SCRIPT>
    }
    else if (w=1024)

    Daß das eine Zuweisung und kein Vergleich ist, wurde ja schon gepostet.
    Muß also lauten:

    else if (w==1024)

    {
    <SCRIPT language=JavaScript src="menu_array_Main_1024.js" type="text/javascript"></SCRIPT>
    }
    else if (w=1280)

    ... und hier entsprechend:
    else if (w==1280)

    {
    <SCRIPT language=JavaScript src="menu_array_Main_1280.js" type="text/javascript"></SCRIPT>
    }
    }
    //-->
    </script>

    Du kannst das Script-Tag per JS in dein Document schreiben:

    z.B.:

    else if (w==1280)
    {
    document.write('<SCRIPT language=JavaScript src="menu_array_Main_1280.js" type="text/javascript"></SCRIPT>');
    }

    gruß
    peter

    1. Vielen Dank Peter! Genau das habe ich gesucht! Funktioniert!!! PRIMA!!! Hier nochmal mein fertiges Skript (wer weiß wem es hilft):

      <script language=JavaScript type="text/javascript">
      <!--
      if (window.screen)
      {
      var w=screen.width
      if (w==800)
      {
      document.write('<SCRIPT language=JavaScript src="menu_array_Main_800.js" type="text/javascript"></SCRIPT>');
      }
      else if (w==1024)
      {
      document.write('<SCRIPT language=JavaScript src="menu_array_Main_DE.js" type="text/javascript"></SCRIPT>');
      }
      else if (w==1280)
      {
      document.write('<SCRIPT language=JavaScript src="menu_array_Main_DE.js" type="text/javascript"></SCRIPT>');
      }
      }
      //-->
      </script>

      1. Hallo AndiCGN,

        und was sehen Besucher, deren Bildschirm weder 800px noch 1024px noch 1280 Pixel breit ist? Hast du dir schon mal die neuesten Notebook- und Monitorprospekte angesehen? Von PDA und Co. hast du auch schon gehört?

        Und was sehen Besucher, die zwar einen 1280px-Monitor haben, deren Browserfenster aber nur ca 1000px breit ist und die möglicherweise auch noch irgendeine Sitebar eingeblendet haben?

        Und was sehen Besucher, die Javascript abgeschaltet haben oder denen Javascript nicht zur Verfügung steht? Was ist mit Suchmaschinen?

        Gruß, Jürgen

      2. var w=screen.width

        Ich kann hier immer wieder nur wiederholen:

        Ich benutze zwei Rechner:
        15" (Auflösung: 800x600) Browsergröße ca. 780 x 434
        19"( 1280x1024 ) Browsergröße ca. 730 x 560

        Die Fläche auf dem größeren Monitor ist bei mir schmaler, aber höher, da ich gerne andere Anwendungen im Sichtfeld habe. (Relevant ist ausserdem noch die eingestellte Systemschriftgröße und evtl. die Browserschriftgröße)

        Struppi.