Autor | Zpráva | ||
---|---|---|---|
Tomsik Profil * |
#1 · Zasláno: 13. 8. 2011, 14:15:14
Ahoj, řeším problém... detekuji prohlížeč a na základě detekce podstčím jiný kód...
function detek(){ if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) <= 8) { alert("POUZE IE 8 a starsi"); } else { alert("OSTATNI PROHLIZECE"); }; } Muj cil je ten, ze potrebuji aby bylo rozpoznano zda se jedna o IE 8 a starší verze a ostatní Uvedeny kód, mi ale IE 9 nevyhodnotí jako ostatní. Díky za radu |
||
Joker Profil |
#2 · Zasláno: 13. 8. 2011, 14:54:38
Tomsik:
„detekuji prohlížeč a na základě detekce podstčím jiný kód“ To je obvykle špatný přístup. Za prvé mi přijde divné už to dělení na skupiny. Řekl bych, že třeba IE8 má víc společného s Firefoxem 3.x než třeba s IE6. Stejnětak IE9 má víc společného s IE8 než s Netscape Navigatorem 4. Za druhé bych nerozlišoval prohlížeče Javascriptem. Co lidi bez JS? Za třetí, zejména v JS, je obvykle nesmysl rozlišovat prohlížeče. Opravdu chcete návštěvníky dělit podle názvu prohlížeče? Nebo spíš podle technologií podporovaných tím prohlížečem? |
||
Tomsik Profil * |
#3 · Zasláno: 13. 8. 2011, 16:16:30
Joker:
Věřím, že je to obvykle špatný přístup, ale v mém případě to je optimální řešení. 1. vše jsem otestoval a mám problém pouze u IE 8 a starší, v ostatních prohlížečích problém není.. v Firefoxu ani Safari. 2. mají prostě smůlu, respektive kód který jim opět podstrčím je stejně JS, takže nemá smysl k ověřování využívat něco jiného než JS. |
||
Chamurappi Profil |
#4 · Zasláno: 13. 8. 2011, 16:35:49
Reaguji na Tomsika:
„mám problém pouze u IE 8 a starší, v ostatních prohlížečích problém není“ Ale ten problém není v prohlížeči, ale v (ne)podpoře něčeho konkrétního, nebo v nějakém jiném konkrétním jevu, který nemusí být nutně závislý na konkrétním prohlížeči, tak proč netestuješ to, s čím je problém? Pomohlo by upřesnění, o jaký problém jde. |
||
Tomsik Profil * |
#5 · Zasláno: 13. 8. 2011, 16:48:55
Chamurappi:
Jasně, jde o efekt fadeIN a fadeOut použitý na DIVu, chci proto pro IE 8 a starší tento efekt úplně vypustit. Kdyby se jednalo o IE6, tak už to neřeším, ale IE 8 je ještě "čerstvý" prohlížeč. díky |
||
margin Profil * |
#6 · Zasláno: 13. 8. 2011, 17:05:04
Paradoxní na tom je, že IE4 byl první prohlížeč, ve kterém šlo efekt fadeIN a fadeOut zprovoznit. Za tu dobu, co se marně snažíš omezit uživatele starších explorerů, jsi mohl mít řešení fungující napříč dnes běžně používanými prohlížeči.
|
||
Tomsik Profil * |
#7 · Zasláno: 13. 8. 2011, 17:06:16
margin:
A jaké je to řešení? |
||
Chamurappi Profil |
#8 · Zasláno: 13. 8. 2011, 17:49:09
Reaguji na Tomsika:
Neznáme tvůj problém. Měnění průhlednosti v Exploreru běžně funguje celkem správně. Pokud u tebe ne, nevíme proč, dodej ukázku. |
||
Časová prodleva: 2 měsíce
|
|||
gerrycz Profil |
#9 · Zasláno: 7. 10. 2011, 12:06:39 · Upravil/a: gerrycz
Právě jsem řešil stejnou věc a upravil jsem podmínku následovně:
if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.substring(22, 23) <= 8) // nebo pro všechny IE (document.all) Protože navigator.appVersion ukazuje i u IE 9 toto: 5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; BRI/2; FDM), proto není vhodné používat parseInt(navigator.appVersion), a proto jsem vyříznul z appVersion číslo co je uvedeno až u MSIE 9.0, |
||
Chamurappi Profil |
#10 · Zasláno: 7. 10. 2011, 12:38:51
Reaguji na gerryhocz:
Dost krátkozraké. Víš, co bude na dvacátém druhém znaku v Internet Exploreru 10? Pravděpodobně jednička. Viz [#4]. Příčinou problému nikdy není verze, není důvod ji testovat. |
||
gerrycz Profil |
#11 · Zasláno: 7. 10. 2011, 13:32:36
Reaguji na Chamurappiho:
O dopředné kompatibilitě jsem popravdě nepřemýšlel. Chápu připomínku o zbytečnosti testování verzí prohlížečů, ale zatím to lépe vyřešit neumím. Podmínku by, tedy kvůli budoucí kompatibilitě, bylo nejlepší upravit takto: if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion.substring(22, 24)) <= 8) Vyříznout z appVersion dvě čísla co budou uvedena až u MSIE 10.0 a kvůli zatím nižším verzím zaokrouhlovat parseInt() (MSIE 9.0)... Ovšem legrace by byla, kdyby se v MS rozhodli používat místo desítky římskou X (jako třeba Corel X4, nebo Adobe CS5) :-) . |
||
_es Profil |
#12 · Zasláno: 7. 10. 2011, 13:36:12
gerrycz:
„zatím to lépe vyřešit neumím“ Čo je to „to“? |
||
Joker Profil |
#13 · Zasláno: 7. 10. 2011, 15:14:24
gerrycz:
V tomto vláknu už počtvrté: Ta metoda je nesmyslná jako celek. Přesně takové idiotské kontroly vedly k tomu, že minimálně v Opera a Firefox mají možnost tyhle informace „falšovat“ a přesně takové idiotské kontroly vedly k tomu, že Opera 10+ má v useragentu a navigator.appVersion verzi „9.80“ Stránku většinou nezajímá obchodní název prohlížeče. Obvykle ji zajímá, jestli prohlížeč podporuje určité technologie. V tom případě: Správné řešení: Zeptat se prohlížeče, zda podporuje technologie které potřebuji. Zcestné řešení: Udělat si seznam všech prohlížečů světa a dumat jakou stránku kdo dostane. |
||
Časová prodleva: 9 měsíců
|
|||
Šéva Profil |
Zdravím
pomocí uvedeného JS si kontroluji verzi IE,ale když si do alertu dám parseInt(navigator.appVersion.substring(22, 24)) tak mi to pod IE 7,8 i 9 vypisuje 7... jak to tedy má správně být?
|
||
Marek88 Profil |
Šéva:
„jak to tedy má správně být?“ Joker [#13]: „Správné řešení: Zeptat se prohlížeče, zda podporuje technologie které potřebuji.“ |
||
Časová prodleva: 12 let
|
0