← Uz sākumu

Browser sniffing (JS)

2004. gada 27. jūlijā, 3 komentāri

Pēdējā laikā (visa pasaule to zin jau gadiem) esmu nācis pie atziņas, ka nav vērts censties, pūlēties un mēģināt jau sākotnēji ar JavaScript palīdzību noteikt lietotāja pārlūku. T.s. browser sniffing manuprāt jau sen vairs nav ērts, vienkāršs un pieņemams veids, kā dažādu skriptu iebarošanu dažādiem pārlūkiem. Agrāk (sen, sen atpakaļ) pietika pārbaudīt, vai pārlūks atbalsta document.all kolekciju. Ja ne, tad tas ir Netscape. Pretējā gadījumā - IE. Nāca Gecko, kuram nebija document.all, bet bija (arī IE esoša) document.getElementById metode un Opera, kurai ir gan viens, gan otrs, un, lai jamo atpazītu, viena no metodēm ir mēģināt izgrebt ar ko līdzīgu navigator.userAgent.toLowerCase().indexOf("opera") vai jaunākām versijām - window.opera.

Un pārlūki tik nāks un mainīsies.

Daudz prātīgāk ir nepieciešamo koda gabalu pārbaudīt pēc atbalstāmajām tehnoloģijām. Piemēram, ja mums ir jāizmanto teksta iezīmēšana, tad mēs pārbaudam, nevis, vai pārlūks ir IE vai Mozilla, bet gan to, vai pārlūks atbalsta vienu, vai otru šīs iespējas implementāciju. Konkrēts piemērs:

if (document.selection) { // Microsoft } else if (object.setSelectionRange) { // DOM } else { // Viskascic }

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar wes

2004. gada 27. jūlijā, plkst. 15:34

Tas var noderēt. Bet es pārsvarā dokumentus rakstu pēc W3 standarta + vēl lai uz IE, Mozilla un Opera viss korekti strādā. Dažkārt IE kautko 'pārprot', tad nākas nedaudz palocīties, bet vispār nav nācies rakstīt kautko speciāli Microsoft 'jaukajām' tehnoloģijām. Ieteikums tik un tā labs!

Gravatar Neonz

2004. gada 27. jūlijā, plkst. 15:54

ahhh, nu pareizi. Jebkura pieeja, kas ir balstīta uz programmprodukta nevis fīčas pārbaudi, ir nepareiza. Dēļ šādām nepareizām pārbaudēm mēs arī nonākam pie lielākās daļas nesavietojamības problēmu. (un es šajā gadījumā nerunāju par mājaslapām, bet par programmatūru kā tādu)

Gravatar CooLynX

2004. gada 29. jūlijā, plkst. 15:26

Es par laimi neko pārāk sarežģītu neesmu rakstījis un man ir pieticis ar //document.getElementById// un esmu laimīgs. ;)