Felix Riesterer: ?id=x ohne ständiges neuladen der seite möglich ?

Beitrag lesen

Liebe(r) kointa,

so langsam zweifle ich, ob ich begriffen habe, was Du überhaupt _wirklich_ willst. Ich denke, Du willst das so. Der User ruft eine Seite auf, z.B. so: http://www.site.extra.hu/index.php?game=1

Durch den Parameter "game" (besser als "ID") wird das Script veranlasst, die SWF-Datei direkt auf der Seite einzubinden. Das bedeutet, dass ein User mit diesem Parameter in der URL das Spiel in das HTML-Dokument vom Server (nicht von JavaScript!) eingebaut bekommt.

Da Du beim ersten Betreten der Seite aber _kein_ Spiel laden möchtest, wirst Du eben Links auf der Seite anbieten, die die Seite erneut laden lassen, um dabei dann abhängig vom "game"-Parameter eine passende Spiele-SWF in das Dokument (per <object>) zu integrieren.

Nun könnte man das Neuladen der Seite dahingehend vermeiden, indem nur die SWF-Datei per JavaScript "sofort" in die Seite eingebaut wird. Und das tust Du anhand des "game"-Parameters im Verweisziel des Links. Also brauchst Du eine neue JavaScript-Funktion, die nicht den kompletten Pfad zur SWF-Datei braucht, sondern die sich lediglich den Wert dieses "game"-Parameters holt, um dann selbst zu "wissen", wo die SWF-Datei tatsächlich liegt.

Du verlinkst damit _niemals_ _direkt_ auf die SWF-Datei, sondern immer nur auf eine scriptgenerierte Seite, die im Fehlerfalle (Plugin nicht vorhanden oder veraltet) Hinweise gibt, wie das Problem zu lösen ist.

Für eine neue JavaScript-Funktion benötigst Du nun folgendes:

function flash(aElm) {  
    var baseURL = "/games/"; // Pfad zu den SWF-Dateien  
    var games = new Array();  
    var gameNum = false;  
    var loadGame = '';  
  
    // Games nummerieren, dabei Dateinamen ohne ".swf" benutzen  
    games[1] = "jingo";  
    games[2] = "schach";  
    games[3] = "poker";  
    games[4] = "roulette";  
    games[19] = "maeusemelken";  
  
    // angefordertes Game ermitteln  
    if (aElm && aElm.href && aElm.href.match(/(\?|&)game=\d+/i)) {  
        // gültiges Linkziel gefunden  
        gameNum = aElm.href.replace(/^.*(\?|&)game=(\d+).*/i, "$2");  
    }  
  
    if (gameNum && games[gameNum]) {  
        // Spiel kann jetzt angefordert werden  
        loadGame = baseURL + games[gameNum] + ".swf"; // URL zum Spiel  
  
        // <-- hier jetzt die SWF-Datei als <object> einbinden... z.B. mit [link:http://blog.powerflasher.de/swfobject2/@title=SWFObject2]  
    }  
  
    return false;  
}

Deine Links sehen dazu dann so aus:
<a href="http://www.site.extra.hu/index.php?game=1" onclick="return flash(this)">Jingo jetzt spielen</a>

Liebe Grüße aus Ellwangen,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)