?id=x ohne ständiges neuladen der seite möglich ?
kointa
- javascript
0 Felix Riesterer0 kointa0 LX0 kointa
hi all,
dies ist ein post zu folgendem thread da der ja leider im archiv liegt:
http://forum.de.selfhtml.org/?t=172600&m=1131330
ich habe es mittlerweile hinbekommen dass das spiel startet wenn ich index.php?id=1 als url habe, ich möchte aber nicht bei jedem linkklick die seite neu laden, im moment ist das auch nicht der fall, aber wenn ich jetzt jedem spiel eine index.php?id=x geben würde, damit man durch kopieren des links den direktlink kriegt, dann lädt bei jedem linkklick auf der seite die seite neu, ist ja auch logisch.
ich habe leider keine idee wie ich das jetzt richtig realisieren kann, dass man durch kopieren des link ein game/video direkt verlinken kann und gleichzeitig ein normaler linkklick als simple url übergabefunktion fungiert.
hier mal der code:
<script type="text/javascript">
function getid()
{
// wird nach dem vollständigen Laden der Seite ausgeführt
var id = '<?php echo $_GET['id']; ?>';
// IDs für die Spiele definieren:
var games = new Array();
games[1] = "jingo";
games[2] = "schach";
games[3] = "poker";
// Spiel aufrufen
if (games[id])
flash("http://www.site.extra.hu/Games/"+games[id]+".swf");
}
</script>
<a class="page" href="http://www.site.extra.hu/index.php?id=1">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf" onclick="flash(this.href);return false">Roulette</a><br>
der erste link lädt eben die seite neu und der zweite übergibt intern nur die neue url zu nem anderen spiel.
kann ich beide funktionen irgendwie erhalten und kombinieren ???
vielen dank schonmal !!
grüße
kointa
Liebe(r) kointa,
<a class="page" href="http://www.site.extra.hu/index.php?id=1">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf" onclick="flash(this.href);return false">Roulette</a><br>der erste link lädt eben die seite neu und der zweite übergibt intern nur die neue url zu nem anderen spiel.
kann ich beide funktionen irgendwie erhalten und kombinieren ???
klar!
<a class="page" href="http://www.site.extra.hu/index.php?id=1" onclick="flash(this.href);return false">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf?id=914" onclick="flash(this.href);return false">Roulette</a><br>
Da ich nicht weiß, welche ID Roulette in Deinem Javascript zugeteilt bekommt, habe ich einfach mal 914 angenommen...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Liebe(r) kointa,
<a class="page" href="http://www.site.extra.hu/index.php?id=1">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf" onclick="flash(this.href);return false">Roulette</a><br>der erste link lädt eben die seite neu und der zweite übergibt intern nur die neue url zu nem anderen spiel.
kann ich beide funktionen irgendwie erhalten und kombinieren ???
klar!
<a class="page" href="http://www.site.extra.hu/index.php?id=1" onclick="flash(this.href);return false">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf?id=914" onclick="flash(this.href);return false">Roulette</a><br>
>
> Da ich nicht weiß, welche ID Roulette in Deinem Javascript zugeteilt bekommt, habe ich einfach mal 914 angenommen...
>
> Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),
>
> Felix Riesterer.
so habe ich es schon probiert, das geht aber nicht, weil:
die funktion flash(this.href) verweist ja jetzt auf kein spiel mehr!
es bleibt der bereich weiß.
verstehst du was ich meine sonst schick ich dir einfach mal die richtige adresse zu der page.
Dann musst Du der Funktion flash entweder einen Link auf ein Spiel mitgeben oder die Möglichkeit geben, zwischen Spielen und Seitenlinks zu unterscheiden, bspw. indem Du val.indexOf('.swf') erfragst und entweder Dein Flash-Object mit der neuen Datei bestückst oder bei Bedarf tatsächlich die Location änderst.
Gruß, LX
Dann musst Du der Funktion flash entweder einen Link auf ein Spiel mitgeben oder die Möglichkeit geben, zwischen Spielen und Seitenlinks zu unterscheiden, bspw. indem Du val.indexOf('.swf') erfragst und entweder Dein Flash-Object mit der neuen Datei bestückst oder bei Bedarf tatsächlich die Location änderst.
Gruß, LX
aber irre ich mich da oder lädt die seite so nicht auch komplett neu ?
das problem ist ja dass ich als link die index.php?id=x habe also lädt er die index.php neu.
das will ich aber nicht, deshalb mus sich den links einfach *.swf als href geben und onclick die funktion ausführen. so lädt die seite eben nicht neu sondern es ändert sich nur der inhalt im player.
ich will aber ja den link so haben dass man ihn einfach kopieren kann und er auf index.php?id=x verweist.
ist das so überhaupt realisierbar ?
Liebe(r) kointa,
ich will aber ja den link so haben dass man ihn einfach kopieren kann und er auf index.php?id=x verweist.
ist das so überhaupt realisierbar ?
klar, aber da solltest Du Dir schon Mühe geben, die Dir angebotenen Code-Beispiele genauestens zu studieren. Ich hatte Dir ja schon ein paar Hinweise gegeben...
Also probieren wir es nocheinmal:
<a class="page" href="http://www.site.extra.hu/index.php?id=1" onclick="flash(this.href);return false">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf?id=914" onclick="flash(this.href);return false">Roulette</a><br>
Wenn wir uns die zwei Links genauestens(!) anschauen, dann sehen wir, dass da entweder ein Spiel (sprich Flash-Datei) direkt verlinkt wird (zweiter Link im Code), oder aber eine "komische Seite", die nur über ihre ID näher bestimmt wird. Du hast die Qual der Wahl, was Du nun wie haben willst.
Wenn es wie im ersten Link funktionieren soll, dann musst Du halt Deine JavaScript-Funktion mit allen Spielen und ihren zugehörigen IDs füttern - dann kannst Du ausschließlich Links der Sorte verwenden, wie der erste Link im Codebeispiel. Alles was Du anzupassen hättest, wäre die ID.
Im Übrigen bin ich noch immer der Meinung, dass Deine Funktion "flash()" an ihrem Ende ein "return false" haben sollte, damit Du im onclick-Attribut Deiner Links etwas kürzer 'onclick=return flash(this.href)"' schreiben kannst.
Hast Du nun begriffen, was ich Dir die ganze Zeit angeboten habe? Das nächste Mal machst Du das SELF, denn das hier ist das SELFFORUM!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Liebe(r) kointa,
ich will aber ja den link so haben dass man ihn einfach kopieren kann und er auf index.php?id=x verweist.
ist das so überhaupt realisierbar ?
klar, aber da solltest Du Dir schon Mühe geben, die Dir angebotenen Code-Beispiele genauestens zu studieren. Ich hatte Dir ja schon ein paar Hinweise gegeben...
Also probieren wir es nocheinmal:
<a class="page" href="http://www.site.extra.hu/index.php?id=1" onclick="flash(this.href);return false">Roulette Test</a><br>
<a class="page" href="http://www.site.extra.hu/Games/roulette.swf?id=914" onclick="flash(this.href);return false">Roulette</a><br>
>
> Wenn wir uns die zwei Links genauestens(!) anschauen, dann sehen wir, dass da entweder ein Spiel (sprich Flash-Datei) direkt verlinkt wird (zweiter Link im Code), oder aber eine "komische Seite", die nur über ihre ID näher bestimmt wird. Du hast die Qual der Wahl, was Du nun wie haben willst.
>
> Wenn es wie im ersten Link funktionieren soll, dann musst Du halt Deine JavaScript-Funktion mit allen Spielen und ihren zugehörigen IDs füttern - dann kannst Du ausschließlich Links der Sorte verwenden, wie der erste Link im Codebeispiel. Alles was Du anzupassen hättest, wäre die ID.
>
> Im Übrigen bin ich noch immer der Meinung, dass Deine Funktion "flash()" an ihrem Ende ein "return false" haben sollte, damit Du im onclick-Attribut Deiner Links etwas kürzer 'onclick=return flash(this.href)"' schreiben kannst.
>
> Hast Du nun begriffen, was ich Dir die ganze Zeit angeboten habe? Das nächste Mal machst Du das SELF, denn das hier ist das SELFFORUM!
>
> Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),
>
> Felix Riesterer.
Ich habe schon verstanden was du mir anbietest aber ich will die beiden funktionen doch kombinieren.
Wenn ich dem \*.swf ?id=x anhänge dann verweist der ja direkt auf das spiel und nicht auf meine website.
dann muss ich wohl das neuladen in kauf nehmen. aber danke !
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.
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>`{:.language-html}
>
> Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),
>
> Felix Riesterer.
JAAAAA ES GEHT !!!
Genau das meinte ich !!! Perfekt, ich danke dir vielmals für deine Hilfsbereitschaft und deine Geduld ;). Das hätte ich niemals allein hingekriegt.
Jetzt lädt die Seite nur den Flash Content neu trotz index.php?game=x links.
BIG THX
Grüße