Liebe(r) kointa,
Du willst diverses auf einmal. Das ist nicht verkehrt, jedoch solltest Du in manchen Details etwas anders vorgehen.
<script type="text/javascript">
id='<?php echo $_GET['id'];?>';
if (id == '1')
{
flash("http://www.site.de/Games/roulette.swf");
}
</script>Diese Funktion soll sofort beim Laden der Seite ausgeführt werden, obwohl die Seite noch nicht bis zum Ende geladen hat. Das ist potentiell gefährlich, da Dein Script auf Dinge zugreifen möchte, die noch nicht existieren.
Ich muss jetzt ein bisschen raten, da ich die Funktion flash() nicht kenne. Zuerst einmal initialisieren wir Deine Funktion erst nach dem vollständigen Laden der Seite:
<script type="text/javascript">
window.flashStarter = {
onLoad : function () {
// 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] = "roulette";
games[2] = "schach";
games[3] = "poker";// Spiel aufrufen
if (games[id])
flash("http://www.site.de/Games/"+games[id]+".swf");
},init : function () {
// wird bereits beim Laden der Seite ausgeführt:
this.oldWinOnLoad = window.onload;
window.onload = function () {
if (typeof(window.flashStarter.oldWinOnLoad) == "function")
window.flashStarter.oldWinOnLoad();
window.flashStarter.onLoad();
};
}
};window.flashStarter.init();
> `</script>`{:.language-html}
>
> > <a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="flash(this.href);return false">Roulette</a>
>
> Besser wäre es, wenn die Funktion flash() in sich ein "return false" am Ende hätte, denn dann könntest Du die Links so gestalten: `<a class="page" href="http://www.site.de/Games/roulette.swf?id=1" onclick="return flash(this.href);">Roulette</a>`{:.language-html}.
>
> Noch besser wäre es, wenn Du die JavaScript-Funktionalität mit diesem onclick erst von JavaScript selbst erzeugen lässt. Das soll heißen, dass Du im Quelltext der Seite überhaupt kein onclick notierst, sondern dass das die onLoad()-Funktion meines oben vorgeschlagenen flashStarter-Objektes tut. Das könnte so aussehen:
>
> ~~~javascript
// das muss noch in die obige Funktion hinein:
> var as = document.getElementsByTagName("a");
> for (var i = 0; i < as.length; i++) {
> // href checken, ob es auf eine Flash-Datei verweist
> if (as[i].href && as[i].href.match(/\.swf$/))
> as[i].onclick = "return flash(this.href);";
> }
Mein Code ist ungeprüft! Hoffentlich hilft er.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
VIELEN DANK für deine ausführliche Antwort.
Hat mir schonmal sehr geholfen !
meine flash funktion sieht folgendermaßen aus:
function flash(other)
{
if (screen.width >= 1280)
{
document.getElementById('player').innerHTML="<embed src='"+other+"' height='450' width='600' quality='high' scale='exactfit' menu='false' swLiveConnect='false' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'></embed>";
window.scrollTo(0,150);
}
else
{
document.getElementById('player').innerHTML="<embed src='"+other+"' height='320' width='440' quality='high' scale='exactfit' menu='false' swLiveConnect='false' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'></embed>";
window.scrollTo(0,150);
}
}
das mit dem games array ist eine sehr gute idee nur liegen leider nicht alle spiele auf meinem server, sodass die url manchmal eine andere ist.
ich werde deinen code mal einbauen, nur habe ich ja dann wieder eine doppelte lösung. also ich habe dann die <a> links auf die man von der siete aus zugreifen kann und eben die id in der url, die dann die spiele über die funktion startet.
kann ich nicht über eine funktion, die die id in der url kennt, das zugehörige <a> tag verwenden ?
dann müsste ich nicht bei jedem neuen spiel auch die funktion anpassen, verstehste wie meine ?
grüße