Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Проблема с оперой (https://javascript.ru/forum/css-html-browser/3142-problema-s-operojj.html)

Ден 22.03.2009 15:00

Проблема с оперой
 
Привет всем. Вот собственно есть проблема, прошу подсказки более опытных чем я людей.
Есть менюшка выпадающая, написана на JavaScript, в FF работает, в IE - работает кое как, а вот в Опере - 0. В коде есть я так понял блок рассчитанный на кроссбраузерность,
я его приведу, просто весь код слишком большой
....
var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
&& (agt.indexOf('webtv')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
(agt.indexOf("; nav") != -1)) );
var is_nav5 = (is_nav && (is_major == 5));
var is_nav5up = (is_nav && (is_major >= 5));
var is_moz7 = (agt.indexOf('0.7')!=-1)
var is_ie = (agt.indexOf("msie") != -1);
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1) );
var is_ie4up = (is_ie && (is_major >= 4));
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5up = (is_ie && !is_ie3 && !is_ie4);
var is_opera = (agt.indexOf("opera") != -1);
var is_opera5 = (is_opera && (is_major != 3) && (agt.indexOf("5.01") != -1));
var is_webtv = (agt.indexOf("webtv") != -1);
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_mac = (agt.indexOf("mac")!=-1);
//********
// define browser type, platform and color depth variables
// if client settings are not specific, treat as old browser (no script) on windows at 256 color
var bType = "old";
var os = "win";
var cd = "lo";
// if true look for colorDepth property (ie); if false look for pixelDepth property (ns);
var usec = true;
// browser
if (is_ie3 == true) { bType = "ie3"; usec = true; }
if (is_ie4up == true && is_opera == false && is_webtv == false) { bType = "ie4"; usec = true; }
if (is_nav2 == true || is_nav3 == true) { bType = "ns3"; usec = false; }
if (is_nav4up == true && is_nav5up == false) { bType = "ns4"; usec = false; }
if (is_nav5up == true && is_moz7 == false) { bType = "ns6"; usec = false; }
if (is_nav5up == true && is_moz7 == true) { bType = "mz7"; usec = false; }
if (is_opera == true) { bType = "op4"; usec = true; }
if (is_opera5 == true) { bType = "op5"; usec = true; }
if (is_webtv == true) { bType = "tv"; usec = true; }
**********
var is_opera5 = (is_opera && (is_major != 3) && (agt.indexOf("5.01") != -1));
когда в этой строчке я меняю 5.01 на скажем 9.24, то только Оперой 9.24 я и могу открыть страницу.
А как на счёт остальных версии, до и после 9.24? Подскажите, чайник я в Javascript((

Gvozd 22.03.2009 15:49

выкиньте этот скрипт, и возьмите какой-нибудь поновее.
либо напишите с нуля.
ибо скрипт рассчитанный на оперу пятой версии, и возлагающий проблему кросбраузерности на navigator.userAgent качественным быть не может, по определению.
где вы такое старье откапываете, не знаю.
PS на этом форуме не помогают подогнать под себя чужие скрипты написанные еще при фаре горохе.
здесь вам не напишут за вас скрипт.
этот форум предназначен для помощи в написании. то есть вы пишите, и если конкретно что-то не получается, справшиваете совета.


Часовой пояс GMT +3, время: 10:53.