Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться (https://javascript.ru/forum/misc/4640-pomogite-razobratsya.html)

maxsoftware 14.08.2009 12:31

Дело то не в кодировке.
Вернёмся к скрипту.
40 строка.
search = document.forms['search_form'].elements['search'].value;
if(search.length > 1) {

Riim 14.08.2009 13:05

Разве свойство elements у формы во всех браузерах есть?

x-yuri 14.08.2009 13:09

Цитата:

Сообщение от maxsoftware
Дело то не в кодировке.

кодировка - это про navigator.appName. Про кодировку можно почитать здесь Откуда информация, что Netscape в cp1251 отсылает, да и вообще, кто им сейчас пользуется?

Цитата:

Сообщение от maxsoftware
Вернёмся к скрипту.

а как ты определил 40-ую строку: от начала странички или от начала тэга script? Ты уверен что это 40-ая строка? А если после нее добавить пустую строку, номер не измениться? Если перед ней добавить пустую, измениться? Насколько я помню ie непонятно как сообщает номер строки. Или ты все-таки в отладчике строку выяснил?
p.s. зачем создавать глобальные переменные (search, например)

x-yuri 14.08.2009 13:11

Цитата:

Сообщение от Riim
Разве свойство elements у формы во всех браузерах есть?

даже в стандарте есть

Riim 14.08.2009 13:12

Цитата:

Сообщение от x-yuri
даже в стандарте есть

Я наверно с children перепутал.

maxsoftware 14.08.2009 13:57

FireFox определяется как Netscape.
Про 40 строку IE показал, придётся через отладчик разбираться.
Про глобальные переменные как-то не задумывался.

Kolyaj 14.08.2009 14:55

Цитата:

Сообщение от maxsoftware
FireFox определяется как Netscape.

var isIE = navigator.userAgent.indexOf('Mozilla') != -1

Черт, все браузеры как IE определяются.

maxsoftware 14.08.2009 15:15

Нет, можете проверить alert(navigator.appName);

x-yuri 14.08.2009 17:21

ну давайте тогда глянем, как это делается в фреймворках (конечно, не истина в последней инстанции), может кто-то даже прокомментирует

prototype (хоть его и ругали уже сегодня)
Browser: (function(){
    var ua = navigator.userAgent;
    var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
    return {
      IE:             !!window.attachEvent && !isOpera,
      Opera:          isOpera,
      WebKit:         ua.indexOf('AppleWebKit/') > -1,
      Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
      MobileSafari:   /Apple.*Mobile.*Safari/.test(ua)
    }
  })(),


jQuery
jQuery.browser = {
	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
	safari: /webkit/.test( userAgent ),
	opera: /opera/.test( userAgent ),
	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
};


mootools
var Browser = $merge({

	Engine: {name: 'unknown', version: 0},

	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},

	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},

	Plugins: {},

	Engines: {

		presto: function(){
			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
		},

		trident: function(){
			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? 5 : 4);
		},

		webkit: function(){
			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
		},

		gecko: function(){
			return (document.getBoxObjectFor == undefined) ? false : ((document.getElementsByClassName) ? 19 : 18);
		}

	}

}, Browser || {});


ну и стоит отметить, что browser detection considered harmful

p.s. твой вариант, maxsoftware, выглядит довольно древним

maxsoftware 14.08.2009 23:15

Думаешь это имеет отношение к ошибке?


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