Aktivierung von Flash-Element im IE verhindern
Gargamel
- javascript
Also man kennt das ja: im IE müssen Flash-Steuerelemente ja erst via Klick aktiviert werden, was ziemlich lästig ist.
Um es zu verhindern sollte eigentlich folgendes Script funktionieren:
function enableActiveX(containerID)
{
// no IE = no need to enable
if (getInternetExplorerVersion () != -1) {
// get container
var container = document.getElementById (containerID);
// get html in noscript
var html = container.innerHTML;
// write html back to container
container.innerHTML = html;
}
}
function getInternetExplorerVersion()
// http://msdn.microsoft.com/workshop/author/dhtml/overview/browserdetection.asp
{
var rv = -1; // Return value assumes failure
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp ("MSIE ([0-9]{1,}[.0-9]{0,})");
if (re.exec (ua) != null) {
rv = parseFloat (RegExp.$1);
}
}
return rv;
}
Komischerweise findet der Browser das Flash-Objekt nicht mehr, nachdem ich dieses Script einbaue (das Script wird nach dem relevanten Div eingefügt, in dem sich das Flashobjekt befindet). Hat jemand ne Idee woran das liegen könnte oder kennt jemand ne bessere Lösung für dieses Problem?
Dank und Gruß
Gargamel
Hallo Gargamel,
im IE müssen Flash-Steuerelemente ja erst via Klick aktiviert werden
falsch, auch Opera (ab 9.0) benötigt diese Aktivierung.
das Script wird nach dem relevanten Div eingefügt
soweit ich das in Erinnerung habe muss es ein _externes_ Script sein.
Grüße,
Jochen
Tach Jochen,
im IE müssen Flash-Steuerelemente ja erst via Klick aktiviert werden
falsch, auch Opera (ab 9.0) benötigt diese Aktivierung.
Aha, gut zu wissen.
das Script wird nach dem relevanten Div eingefügt
soweit ich das in Erinnerung habe muss es ein _externes_ Script sein.
Was genau heißt "extern" in diesem Fall? Das angegebene Script ist natürlich in ner separaten Datei. Im HTML-Code steht dann nur
<script language="javascript">
enableActiveX("Name des Divs mit dem Flashobjekt");
</script>
Also hier funktioniert das (mit zusätzlicher Weiche, falls clientseitig kein Flash vorhanden ist) eigentlich ganz gut. Bei mir aber nüscht, was mich doch sehr betrübt. ;-)
Cheers
Cervantes
Hi Cervantes ... Gargamel?
Das angegebene Script ist natürlich in ner separaten Datei.
gut
Also hier funktioniert das
Bei mir aber nüscht, was mich doch sehr betrübt. ;-)
Dann solltest du das "bei dir" mal komplett zeigen.
Grüße,
Jochen
Dann solltest du das "bei dir" mal komplett zeigen.
Vielleicht keine schlechte Idee:
Im Head:
<script language="JavaScript" src="activex.js"></script> (Det is jenau das zuvor gepostete Script.)
Im Body:
<div id="flashplayer">
<object type="application/x-shockwave-flash" data="emff_standard.swf?src=sound/mabafu_salsanita.mp3" width="110" height="34" align="middle">
<param name="movie" value="emff_standard.swf?src=sound/mabafu_salsanita.mp3" />
<param name="quality" value="high" />
<param name="bgcolor" value="#481609" />
</object>
</div>
<script language="javascript">
enableActiveX("flashplayer");
</script>
So sieht das aus - nur funktionieren tuts leider nicht.
Gruß
Gargamel
Hallo,
ein testweise eingebautes ...
function enableActiveX(containerID)
{
alert(document.getElementById(containerID).innerHTML);
zeigte nur ein <object .... ></object> Also ohne die params.
Überprüft durch ein alert(document.getElementsByTagName("object")[0].innerHTML);
Dort stand dann tatsächlich "nichts".
Der Fehler ist damit zwar klar, aber wie es dazu kommt ist mir rätselhaft. Im Opera kann ich dieses seltsame Verhalten nicht nachvollziehen.
Grüße,
Jochen
Hallo,
ein testweise eingebautes ...
function enableActiveX(containerID)
{alert(document.getElementById(containerID).innerHTML);
zeigte nur ein <object .... ></object> Also ohne die params.
Überprüft durch ein alert(document.getElementsByTagName("object")[0].innerHTML);
Dort stand dann tatsächlich "nichts".Der Fehler ist damit zwar klar, aber wie es dazu kommt ist mir rätselhaft. Im Opera kann ich dieses seltsame Verhalten nicht nachvollziehen.
Danke für Deine Mühen, auch wenns mir natürlich nur bedingt weiterhilft. ;-) Muss auch zugeben, dass meine JavaScript-Kenntnisse bei Weitem nicht ausreichen, um das halbwegs kompetent zu beurteilen.
Mich wundert halt nur, dass es auf sbk.org bis vor einigen Tagen exakt so implemetiert war und prima funktionierte (Lediglich das Objekt hatte ein paar zusätzliche Angaben, wie z.B. "pluginspage" oder "codebase"). Inzwischen wurde dort mittels dem "AC_OETags.js"-Script zwar noch eine Flash-Detection eingebaut, aber das dürfte keinen großen Unterschied machen. Vorher liefs ja auch.
Tja, Pech gehabt. Müssen die IE-Nutzer eben einmal mehr klicken.
Dank und Gruß
Gargamel
Hallo Gargamel,
Mich wundert halt nur, dass es auf sbk.org bis vor einigen Tagen exakt so implemetiert war und prima funktionierte (Lediglich das Objekt hatte ein paar zusätzliche Angaben, wie z.B. "pluginspage" oder "codebase").
seltsam ist, dass das Verhalten anscheinend durch die Angabe:
data="emff_standard.swf?src=sound/mabafu_salsanita.mp3"
im <object> getriggert wird. Ohne data="..." funktioniert es so wie ich es erwartet hätte.
Grüße,
Jochen
Hallo Gargamel,
Mich wundert halt nur, dass es auf sbk.org bis vor einigen Tagen exakt so implemetiert war und prima funktionierte (Lediglich das Objekt hatte ein paar zusätzliche Angaben, wie z.B. "pluginspage" oder "codebase").
seltsam ist, dass das Verhalten anscheinend durch die Angabe:
data="emff_standard.swf?src=sound/mabafu_salsanita.mp3"
im <object> getriggert wird. Ohne data="..." funktioniert es so wie ich es erwartet hätte.
Mensch, det is ja prima. Tatsächlich funktioniert's ohne die Angabe tadellos. Wozu dient der "data"-Hinweis überhaupt?
Jedenfalls besten Dank für Deine Hilfe. Wäre ich sonst nie drauf gekommen.
Besten Gruß
Gargamel
...ähm ja, nur besteht leider der Firefox auf den "data"-Zusatz. Sacklzement, langsam wirds lästig...;-)
Falls es noch jemanden interessieren sollten - ich habs. ;-)
Zwar völlig anders als ursprünglich angedacht, aber es funktioniert wenigstens, und zwar hiermit:
http://blog.deconcept.com/swfobject/
Wiedersehen
Gargamel
Hallo Gargamel,
es funktioniert wenigstens, und zwar hiermit:
http://blog.deconcept.com/swfobject/
wenn man davon absieht das es nur mit javascript funktioniert ...
Grüße,
Jochen
Hallo Gargamel,
es funktioniert wenigstens, und zwar hiermit:
http://blog.deconcept.com/swfobject/wenn man davon absieht das es nur mit javascript funktioniert ...
Das war bei dem ersten Lösungsansatz ja auch der Fall. Kennst Du ne Möglichkeit, die ohne JavaScript auskommt?
Gruß
Gargamel
Hallo Gargamel,
wenn man davon absieht das es nur mit javascript funktioniert
Das war bei dem ersten Lösungsansatz ja auch der Fall.
jein, der erste Lösungsansatz sah vor, dass das <object> ganz normal in der Seite steht und nur die Aktivierung per javascript erledigt wurde. Ohne js war es halt ein klick mehr
Kennst Du ne Möglichkeit, die ohne JavaScript auskommt?
Der ursprüngliche Ansatz war schon gut. Scheiterte allerdings an dem komischen Verhalten des IE bezüglich dem innerMTML. Das kannst du umgehen indem du dir *nicht* das innerHTML holst, sondern es einfach neu zusammenbastelst und zuweist.
~~~javascript
player=document.getElementById("flashplayer");
obj=
"<object type='application/x-shockwave-flash' " +
" data='foo.mp3'" +
" width='110' height='34'>" +
" <param name='movie' value='foo.mp3'>" +
" <param name='quality' value='high'>" +
"</object>";
player.innerHTML = obj;
Nachteil dabei ist, dass du bei Änderungen 2mal anpacken musst. HTML und javascript. Aber so klappts auch ohne js.
HTH
Jochen
--
Kritzeln statt texten:
[Scribbleboard](http://www.electric-lemon.de/scribbleboard.php)
jein, der erste Lösungsansatz sah vor, dass das <object> ganz normal in der Seite steht und nur die Aktivierung per javascript erledigt wurde. Ohne js war es halt ein klick mehr
Stimmt, da hassu natürlich Recht.
Der ursprüngliche Ansatz war schon gut. Scheiterte allerdings an dem komischen Verhalten des IE bezüglich dem innerMTML. Das kannst du umgehen indem du dir *nicht* das innerHTML holst, sondern es einfach neu zusammenbastelst und zuweist.
~~~javascript
player=document.getElementById("flashplayer");
obj=
"<object type='application/x-shockwave-flash' " +
" data='foo.mp3'" +
" width='110' height='34'>" +
" <param name='movie' value='foo.mp3'>" +
" <param name='quality' value='high'>" +
"</object>";player.innerHTML = obj;
>
> Nachteil dabei ist, dass du bei Änderungen 2mal anpacken musst. HTML und javascript. Aber so klappts auch ohne js.
Werd ich mal ausprobieren. Danke für den Tipp.
Gruß
Gargamel