Autor | Zpráva | ||
---|---|---|---|
kubakoumak Profil |
#1 · Zasláno: 27. 11. 2011, 19:22:49 · Upravil/a: kubakoumak
Ahoj,
měl bych jeden malý dotaz. Jde kterymkoliv způsobem zjistit, jestli má uživatel flashplayer? Dost by se mi to hodilo. Možná by to šlo v js, ale nejsem si jistý. Tady jsem našel toto, ale potřeboval bych to nějak rozvinout. Zkuste mi nějak polopatě ukázat skript, kterej v případě, že flash není, ukáže něco jiného než když je. Dík za odpověď //EDIT: <script>alert(window.navigator.mimeTypes.item(0).description); </script> Možná by fachčilo toto. V chromu mi to vyplivne Adobe flash player - to už by na podmínku šlo :-), ale firefox nic neřiká a IE mi hlásí chybu na 1. řádku. Nevíte co s tím? |
||
DoubleThink Profil * |
#2 · Zasláno: 27. 11. 2011, 19:41:30
Je to trochu komplikovanější – tedy pokud to má fungovat všude. Ideálně sáhni po hotovém scriptu od Adobe.
Adobe Devnet: Detecting Flash Player versions and embedding SWF files with SWFObject 2 |
||
Chamurappi Profil |
#3 · Zasláno: 27. 11. 2011, 20:19:34 · Upravil/a: Chamurappi
Reaguji na kubukoumaka:
var mameFlash = window.ActiveXObject ? new ActiveXObject("ShockwaveFlash.ShockwaveFlash") : navigator.plugins["Shockwave Flash"]; Reaguji na DoubleThinka: „Je to trochu komplikovanější – tedy pokud to má fungovat všude.“ Vážně? |
||
kubakoumak Profil |
#4 · Zasláno: 27. 11. 2011, 21:02:45
Promiň za mojí nechápavost. Moc dobře nechápu, co tím myslíš :-/.
Chrome hlásí: [object DOMPlugin] FF: [object Plugin] IE: [object] To asi nemá být on, že jo? :-( |
||
DoubleThink Profil * |
#5 · Zasláno: 27. 11. 2011, 21:50:53
|
||
Chamurappi Profil |
#6 · Zasláno: 28. 11. 2011, 00:42:31 · Upravil/a: Chamurappi
Reaguji na kubukoumaka:
Proměnnou mameFlash si můžeš dát do if u…
Ale udělal jsem chybu, zapomněl jsem, že v Exploreru vyhodí pokus o vytvoření neexistujícího objektu výjimku — ta se ještě musí odchytit. Reaguji na DoubleThinka: V tom případě takhle: function verzeFlashe() { try { var v; if(typeof ActiveXObject != "undefined") v = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable('$version'); else v = navigator.plugins["Shockwave Flash"].description; var m = v.match(/^[^0-9]*([0-9]*)[\.,]([0-9]*)[^0-9]*([0-9]*).*$/); return [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10) || 0]; } catch(exc) { return [0, 0, 0]; } } |
||
kubakoumak Profil |
#7 · Zasláno: 28. 11. 2011, 13:49:07
Aha....
Teď opravdu nevim co s tim. Mohl bys mi tu funkci trochu popsat? Sorry, asi sem úplně dutej. |
||
Chamurappi Profil |
#8 · Zasláno: 28. 11. 2011, 16:20:36
Reaguji na kubukoumaka:
Samotná detekce flashe po opravě chyby: var mameFlash = false; try { mameFlash = window.ActiveXObject ? new ActiveXObject("ShockwaveFlash.ShockwaveFlash") : navigator.plugins["Shockwave Flash"]; } catch(exc){ } Použití: if(mameFlash) { alert("Máme Flash! To se máme."); } else { alert("Nemáme Flash!"); } „Mohl bys mi tu funkci trochu popsat?“ Nemyslím si, že je nutné jí porozumět. Ale budiž. Podmínka na šestém řádku zjistí, zda pluginy prohlížeče jedou přes ActiveX (=> Internet Explorer), nebo přes systém pluginů od Netscapu (=> ostatní prohlížeče). Z flashového ActiveX objektu jde vymáčkout verze přes metodu GetVariable("$version") — která vrátí něco jako "WIN 11,1,105,55" . Z netscapáckého pluginu se zase dá vyždímat vlastnost description — která vrátí něco jako "Shockwave Flash 10.3 r181" . V obou druzích řetězce mě zajímají první tři čísla, která na řádku 10 vyzobne regulární výraz. Jelikož je výsledkem vyzobnutí pole řetězců a já bych rád pole čísel, provedu ještě pár parseInt ů a výsledné trojčíslí vrátím return em. Pokud cokoliv selhalo, předpokládám, že Flash není, a proto vrátím [0, 0, 0] .Použití funkce verzeFlashe :
var v = verzeFlashe(); if(v[0] > 9 || (v[0] == 9 && v[2] >= 115)) { alert("Máme Flash 9.0.115 či vyšší, takže můžeme mít video v H264, hurá!"); } else { alert("Máme buď starší Flash, nebo nemáme žádný Flash."); } |
||
kubakoumak Profil |
#9 · Zasláno: 28. 11. 2011, 17:28:04
Jseš moc hodnej, díky :-). Doufám, že to pomůže i někomu jinému.
|
||
Časová prodleva: 12 let
|
0