HAVIT Knowledge Base

Vývoj webových aplikací, .NET, SQL, návrh
Welcome to HAVIT Knowledge Base Sign in | Join | Help
-
Home Články Forums Obrázky Soubory

(D)HTML

Dynamic HTML, XHTML, CSS, client scripts

IE: Workaround na "Click to activate and use the control" (FLASH, atp.)

Microsoft bohužel prohrál jednu patentovou právní bitvu ohledně zobrazování objektů deklarovaných elementy OBJECT a EMBED, a tak musel upravit Internet Explorer tak, že nespouští tyto objekty automaticky, nýbrž vyžaduje pro jejich spuštění kliknutí tlačíkem myši - "Click to activate and use the control". Do Internet Exploreru 6 se Vám toto "vylepšení" dostane jednou z aktualizací přes Windows Update, Internet Explorer 7 ho má od počátku.

Naštěstí se celý problém týká pouze OBJECT a EMBED elementů, které jsou umístěny přímo v HTML kódu, resp. v hlavním HTML souboru stránky (včetně skriptů). OBJECT a EMBED objekty, které jsou zavedeny skriptem umístěným v samostatném souboru, fungují normálně bez klikání. Snadno si to můžete ověřit, pokud si vytvoříte samostatný .js soubor s obsahem

document.getElementById('myFlash').innerHTML = '<object ...';

a do stránky ho pak umístíte odkazem

</div id="myFlash">
<script type="text/jscript" src="test.js"></script>

Pokud byste skript document.write() umístili přímo do stránky, nikoliv do samostatného .js souboru, pak by zůstal požadavek "Click to activate..."

Jednoduchý workaround

Na netu je k nalezení spousta připravených skriptů, které umožňují umisťovat FLASH objekty do stránek právě způsoby obdobnými, jako je výše uvedený. Existuje však jednoduchý fígl, který můžete aplikovat i na již existující stránky bez větších změn.

Stačí vytvořit samostatný ie-flash-activate.js soubor s obsahem:

objects = document.getElementsByTagName("object");
for (var i = 0; i < objects.length; i++)
{
    objects[i].outerHTML = objects[i].outerHTML;
}
a do stránky za poslední element <object> umístíte odkaz na něj:

<script type="text/jscript" src="ie-flash-activate.js"></script>...a je to.

Výše uvedený jednoduchý skript v podstatě přesvědčí IE, že jsou elementy <OBJECT> vkládány externím skriptem a ten u nich nebude vyžadovat "Click to activate...". Podstatné je, že výše uvedený skriptík musí být v jiném souboru, mimo stránku!

Funguje to i v IE7.

Published 27. října 2006 9:32 by Robert Haken
Filed under: , ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

dr.m said:

Zdravim, bohuzel skript nefunguje, pokud mam flash object 'pod' obsahem html, pri pouziti <param name="wmode" value="transparent" />.

???

července 24, 2007 13:38

What do you think?

(required) 
(optional)
(required) 
Enter the code you see below

Submit