Как стать автором
Обновить

Комментарии 49

Действительно магия!
Поправьте опечатку: "magick".

Если бы это не был танец с бубном, то назывался он бы logical fixes :)
большое спасибо автору за столь интересный материал
Как заботливо сохраняются ссылки на "родные" методы!
НЛО прилетело и опубликовало эту надпись здесь
он идет вместе с оперой в комплекте...
у меня он(мандрива) лежит в .opera в домашнем каталоге... в винде наверно в Document and Setings - вообщем поиск рулит...
НЛО прилетело и опубликовало эту надпись здесь
В винде %APPDATA%/Opera/[папка в которой установлена опера]/profile/browser.js
Прямо искусственный интеллект какой-то :)
Весьма интересно. Подскажите пожалуйста, а как вы просматриваете скачанные оперой js-файлы?
Есть что-то аналогичное Firebug'у? Очень пригодилось бы.

В своё время искал, но нашел только Developer Console на официальном сайте.
Тоже полезно, но просматривать js-файлы не позволяет.
вот еще очень полезная вещь
http://operawiki.info/WebDevToolbar

разработчики оперы обещют в новом году(в январе) выпустить какую то тулзу(подробнее http://operafan.net/content/view/290/40/ ) к браузеру по возможностям превосходящюю Firebug... ждемс..
У меня не работал один сайт в новой Опере (9.5), и я решил написать баг-репорт. Нажал соответствующую кнопочку, отправил. Через неделю где-то сайт чудесным образом заработал, хотя никаких видимых обновлений браузера не было. Списал на то, что сам "недостаточно усердно пытался открывать".
Спасибо, интересная информация. Файл читать интересно.
В принципе они правильные действия делают. Я первый раз натыкаюсь на то, что они кому-то подложили свинью и полагаю (и надеюсь), что таких случаев немного и за этим следят.
P.S.: Заметил что у гугля фиксят календарь, почту и таблицы. Вот бы еще записную книжку сделали писабельной.
Не соглашусь с вами. Что правильного в том что они фиксят работу своего продукта под конкретные условия. А что если его (сайт) завтра переделают, или пофиксят под оперу? В итоге сайт не будет работать потому что опера фиксит то что уже исправлено/изменено. Мне кажется разработчики сайта должны сами заботиться о работоспособности оного в разных браузерах + Опера заботиться чтобы работали сайты без костылей. А так выглядит все таким образом что программу подгоняют под тесты, то есть на данном наборе данных работает, а чуть в сторону все - не работает. А потом разработчики ломают голову почему один и тот же код на этом сайте работает, а на моем нет :(
Да, понимаю, поддерживаю.
Но мне всё равно нравится подход взять и приделать хотя бы костыль, позаботиться о пользователе.
Я могу быть десять раз верстальщиком/разработчиком сайтов и апологетом стандартов, но мне почти всегда всё равно почему именно криво отображается чей-то сайт. Особенно, если я в нем не был заинтересован. Чаще всего я потребитель.
В Opera могли бы пенять на разработчиков сайтов и прочие отмазы - но они просто со старанием делают своё дело. За это им моё уважение и я с ними надеюсь, что костыли когда-нибудь не понадобятся :)
Согласен. Особенно учитывая, что тот же Гугль никогда не станет впрягаться, чтобы фиксить свои сервисы для Оперы.
>Но мне всё равно нравится подход взять и приделать хотя бы костыль, позаботиться о пользователе.

ага, и создать 10^n лишних действий для разработчика.
а еще орут за стандарты. кхм на таких костылях до финиша первыми не добежать.
с какой стороны смотреть - по мне так идея крайне простая и здравая: разработчики сайта заботятся о фиксах для оперы(наверняка опера кантактирует с тем же гуглом), опера фиксает на уровне браузера свои проблемы - ну а всё остальное что пока не исправлено в конкретном сайте(или по каким то причинам - на уровне движка оперы) временно поправлено костылем - пользователь ведь хочет видеть рабочий сайт уже сейчас.
а под тесты никто ничего не подгоняет - тем более что эти фиксы никак не пытаются скрыть(хотели бы скрыть - скрыли бы;))
Я к тому что вряд ли в Opera отслеживают изменения на сайтах. И если сайт исправил, что-то то костыль так может и остаться, хотя он и не нужен уже.
"баг починился, но только у меня. Файл browser.js тот же самый, но ошибок не выдает. У остальных ничего не работает и пишет в консоль ошибку"

это тебя опера зауважала... и, в порядке исключения, пустила код работать...

А остальные её "не раскусили", поэтому опера им не дала... работающего кода... :)))
Не думаю :)
Больше всего расстраивает в этом тот факт, что не ясно почему так. И так постоянно. Если смотреть на другие браузеры, то там либо работает, либо не работает. А в Опере может работать, а может и не работать - причем причину выяснить часто (как в данном случае) просто невозможно.
Хотя может мы чего то не знаем?
НЛО прилетело и опубликовало эту надпись здесь
афигеть! а вырубить это можно?
Боюсь что нет. Или заставить всех пользователей Опера потереть этот файл? И то мне кажется не поможет, потому что он постоянно обновляется и подгружается.
просто на мой взгляд, это не есть хорошо :)

это же не опера мини. это обычная опера. и если сайты, которые работают везде, не работают в ней - надо и чинить ее, а не сайты...
О чем и речь.
Починить это поведение (то что у меня не работает) можно, но ведь это не особенность работы браузера, а просто заплатка для того чтобы сайты на Prototype работали, и которая "вроде бы никому не мешает". Проверили пару сайтов, на том и успокоились. Теперь я должен сделать заплатку в своем приложении. Завтра они ее "отменят", заплатка будет ненужной. И т.д.?
Что-то мне не нравятся перспективы :)
Ручками можно.

about:config

Browser JavaScript:

Whether to download and use the browser.js file. Enable by setting to 1, Opera will then download the file and set to 2.
0 = Never download or use
2 = Use and check for updates weekly (default)
1 = browser.js signature invalid. On next check for update, a new browser.js will be downloaded and the value set to 2.

http://www.opera.com/support/usingopera/operaini/
Ага! Предлагаете это всем пользователям писать: "Если у вас Опера и сайт не работает, то сделайте следующее: ...". Боюсь что так сайт только потеряет пользователей.
НЛО прилетело и опубликовало эту надпись здесь
Перенес :)
НЛО прилетело и опубликовало эту надпись здесь
Да как раз про этот перечень я и говорил в тексте. Одно "но". Статья эта давно не обновлялась, и не отражает все фиксы.
НЛО прилетело и опубликовало эту надпись здесь

Когда Opera маскируется под другой браузер, то просто меняет значение UserAgent, все остальное остается прежним.

А насчет правильного фикса, то вот пример того как это делаю я, без ущерба для окружающих. У Оперы есть проблема с методом splice когда второй параметр не указан, то опера ведет себя неверно. Вот фикс:

(function(){ 
var native = Array.prototype.splice;
if ([1,2,3,4,5].splice(3).length == 2)
Array.prototype.splice =
function(){
var params;
for (var i = 0; i < arguments.length; i++)
params.push(arguments);
if (params.length < 2)
params[1] = this.length;
return native.apply(this, params);
}
})();

Как тут можно заметить, фикс не проверяет - является ли браузер Оперой или другим, он просто знает что у определнных браузеров есть такая проблема - проверяет есть ли у данного. Если да, делаем подмену, если нет - то ничего не меняем.

НЛО прилетело и опубликовало эту надпись здесь
Зачем кешировать результат теста, если это выполняется один раз?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Представляю, какой вой поднялся бы в комментах, если бы это было обнаружено в MS Explorer-е...
НЛО прилетело и опубликовало эту надпись здесь
Попробовал изменить browser.js на своей опере - фигвам.
После изменения опера устанавливает Browser JavaScript с 2 на 1 (\Opera9\profile\opera6.ini) и перестает использовать измененный browser.js.

Browser JavaScript
Whether to download and use the browser.js file. Enable by setting to 1, Opera will then download the file and set to 2.
0 = Never download or use
2 = Use and check for updates weekly
1 = browser.js signature invalid. On next check for update, a new browser.js will be downloaded and the value set to 2.

Похоже опера где-то хранит чексумму оригинального browser.js и не дает использовать
модифицированный?
Как ни странно, в начале файла browser.js.
Вот почему у меня заработало чудесным образом, я немного поменял этот файл (добавил один перевод строки), и фикс перестал использоваться. Не перестаю удивляться.
Эта чексумма напоминает MIME/UUE coded 2048 битный хэш.
Кто-ть как знает его рассчитать?
думаю проблема не так страшна - баг репорт - и жс-ник пофиксают в ближайшее время, а т.к. он обнавляется автоматом - то и проблемы с сапортом предыдущих версий нет.
Раньше помню под Делфю пишу код... ну всё правильно нигде не накосячил не компилит хоть что делай: еггоги, варнинги... Ну, думаю Борланд накосячил... потом решаю написать чтоли багрепорт - оставляю до утра. Уторм со свожей головы нахожу свой косяк - вся работает.

Натыкался на такую граблю раза 3. Отсюда мораль: "если думаешь что косячит компилер(браузер,...) значит косячишь ты!"
а может стоило все таки дебаггером пройтись и проверить? тут человек проверил!

хотя помню именно в delphi была похожая магия, приходилось несколько раз подряд перезапускать :)
Мдя, отладку данная особенность Оперы затрудняет порой в разы. Сталкивался, причем на примере того же Prototype.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории