Проблема в работе кода

SM
На сайте с 11.11.2014
Offline
18
778

На странице загрузки браузера есть код, меняющий CSS-класс (тем самым подбирает ссылку для OS пользователя):

<body onload="T0=new CngClass('selected');
if (navigator.userAgent.indexOf('Win')!=-1) T0.CngClass('win');
if (navigator.userAgent.indexOf('Mac')!=-1) T0.CngClass('mac');
if (navigator.userAgent.indexOf('Linux')!=-1) T0.CngClass('lin');
if (navigator.userAgent.indexOf('X11')!=-1) T0.CngClass('lin');
if (navigator.userAgent.indexOf('Android')!=-1) T0.CngClass('and');
if (navigator.userAgent.indexOf('iPhone OS')!=-1) T0.CngClass('ios');
if (navigator.userAgent.indexOf('iPhone')!=-1) T0.CngClass('ios');
if (navigator.userAgent.indexOf('iPad')!=-1) T0.CngClass('ios');
if (navigator.userAgent.indexOf('iPod')!=-1) T0.CngClass('ios');
if (navigator.platform('Win64')!=-1) T0.CngClass('win64');
">

С недавних пор заметил, что последняя строка (выделил красным) перестала работать, и если юзер зашел под 64-битной Windows, то ему предлагается 32-битный пакет, вместо 64-битного.

В чём проблема?

P.S.

В коде панели загрузки проблем вроде нет:

<ul class="dd-panel">
<li onclick="T0.CngClass(this);" id="win">
<a href="...">Скачать Firefox</a>
<em>Для Windows 32-bit</em>

<li onclick="T0.CngClass(this);" id="win64">
<a href="...">Скачать Firefox</a>
<em>Для Windows 64-bit</em>

<li onclick="T0.CngClass(this);" id="mac">
<a href="...">Скачать Firefox</a>
<em>Для Mac OS X</em>

<li onclick="T0.CngClass(this);" id="lin">
<a href="...">Скачать Firefox</a>
<em>Для Linux</em>

<li onclick="T0.CngClass(this);" id="and">
<a href="...">Скачать Firefox</a>
<em>Для Android</em>
</ul>

В коде скрипта проблем тоже вроде нет:

/* Назначение класса "selected" */
var T0;
function CngClass(a) {
this.lst = null;
this.cls = a
}
CngClass.prototype.CngClass = function(a) {
if (typeof(a) == "string") {
a = document.getElementById(a)
}
if (this.lst) {
this.lst.className = ""
}
a.className = this.cls;
this.lst = a
};
/* Конец кода назначения класса "selected" */

Люди добрые, подскажите в чём проблема? В долгу не останусь!

SI
На сайте с 03.12.2007
Offline
130
#1

Нет indexOf после navigator.platform

А вообще - https://developer.mozilla.org/ru/docs/Web/API/NavigatorID/platform


Эта возможность была удалена из веб-стандартов. Хотя некоторые браузеры по-прежнему могут поддерживать её, она находится в процессе удаления. Не используйте её ни в старых, ни в новых проектах. Страницы или веб-приложения, использующие её, могут в любой момент сломаться.
-= Онлайн сервисы =-
SM
На сайте с 11.11.2014
Offline
18
#2
Sigmo#ID:
Нет indexOf после navigator.platform

А вообще - https://developer.mozilla.org/ru/docs/Web/API/NavigatorID/platform

Благодарю, заработало!

SM
На сайте с 11.11.2014
Offline
18
#3

Кстати, чтобы код работал и для 32-битных браузеров под 64-битной Windows, он должен выглядеть (выделил зеленым) так:

<body onload="T0=new CngClass('selected');
if (navigator.userAgent.indexOf('Win')!=-1) T0.CngClass('win');
if (navigator.userAgent.indexOf('Mac')!=-1) T0.CngClass('mac');
if (navigator.userAgent.indexOf('Linux')!=-1) T0.CngClass('lin');
if (navigator.userAgent.indexOf('X11')!=-1) T0.CngClass('lin');
if (navigator.userAgent.indexOf('Android')!=-1) T0.CngClass('and');
if (navigator.userAgent.indexOf('iPhone OS')!=-1) T0.CngClass('ios');
if (navigator.userAgent.indexOf('iPhone')!=-1) T0.CngClass('ios');
if (navigator.userAgent.indexOf('iPad')!=-1) T0.CngClass('ios');
if (navigator.userAgent.indexOf('iPod')!=-1) T0.CngClass('ios');
if (navigator.platform.indexOf('Win64')!=-1 || navigator.userAgent.indexOf('WOW64')!=-1 ) T0.CngClass('win64');
">

В противном случае будет работать только для 64-битных браузеров под 64-битной Windows.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий