Homo virtualis группа [γ]
Проблема:
Если в настройках выбран «динамически подгружаемый тег more», то в опере будет ошибка JS, и теги не будут подгружаться.
причина:
движок дайрей высылает неверно сформированный JS, который вызывает ошибку и прерывает скрипт.
к примеру:
зайдём на diary-spirit
первый пост (на данный момент) про гороскопы, с наличествующим тегом more.
Попытаемся его открыть, сервер отдаёт нам файл следующего содержания:
<!--SELECT *
FROM group_authority
WHERE module_id="8"
AND submodule_id="44"
AND group_id="2"-->var obj=document.getElementById('more15745343m1');
obj.innerHTML='Он открывает список ссылок на страницы: <br />
(жирным выделена проблемная часть)
Опера, согласно стандартам (уж не знаю, де-юре или де-факто, но такой стандарт есть), удаляет ведущий <!--, и пытается интерпретировать получившийся код как js
в результате получаем
Javasсriрt - http://diary.ru/~diary-spirit/
Inline sсriрt compilation
Syntax error while loading: line 2 of linked sсriрt at http://diary.ru/~diary-spirit/?post=15745343m1 :
FROM group_authority
-------------------------^
что и требовалось доказать…
Решение:
1 вариант — убрать комментарий.
2 — заменить HTML комментарии на JS (/**/) комментарии.
3 — использовать следующий userJS:
opera.addEventListener('Beforesсriрt',
function (e ) {
try {
if ( e && e.element && e.element.getAttribute('src').indexOf('?post=')==0 && e.element.text.indexOf('<!--')==0) {
e.element.text = e.element.text.replace(//,'*/')
}
}
catch(e) {}
}
,false);
(также этот фикс доступен в моём diary.fix.js фиксе для дневников.
(как устанавливать userJS — смотрите в комментарии к записи
надеюсь что кому-то поможет…
Если в настройках выбран «динамически подгружаемый тег more», то в опере будет ошибка JS, и теги не будут подгружаться.
причина:
движок дайрей высылает неверно сформированный JS, который вызывает ошибку и прерывает скрипт.
к примеру:
зайдём на diary-spirit
первый пост (на данный момент) про гороскопы, с наличествующим тегом more.
Попытаемся его открыть, сервер отдаёт нам файл следующего содержания:
<!--SELECT *
FROM group_authority
WHERE module_id="8"
AND submodule_id="44"
AND group_id="2"-->var obj=document.getElementById('more15745343m1');
obj.innerHTML='Он открывает список ссылок на страницы: <br />
(жирным выделена проблемная часть)
Опера, согласно стандартам (уж не знаю, де-юре или де-факто, но такой стандарт есть), удаляет ведущий <!--, и пытается интерпретировать получившийся код как js
в результате получаем
Javasсriрt - http://diary.ru/~diary-spirit/
Inline sсriрt compilation
Syntax error while loading: line 2 of linked sсriрt at http://diary.ru/~diary-spirit/?post=15745343m1 :
FROM group_authority
-------------------------^
что и требовалось доказать…
Решение:
1 вариант — убрать комментарий.
2 — заменить HTML комментарии на JS (/**/) комментарии.
3 — использовать следующий userJS:
opera.addEventListener('Beforesсriрt',
function (e ) {
try {
if ( e && e.element && e.element.getAttribute('src').indexOf('?post=')==0 && e.element.text.indexOf('<!--')==0) {
e.element.text = e.element.text.replace(//,'*/')
}
}
catch(e) {}
}
,false);
(также этот фикс доступен в моём diary.fix.js фиксе для дневников.
(как устанавливать userJS — смотрите в комментарии к записи
надеюсь что кому-то поможет…
Не проще ли исправить скрипт дайрей, чем каждому пользователю править Оперы? Ведь раньше так не было, море нормально подгружалось. *риторический, видимо, вопрос*
И последнее. Почему упорно считается, что это проблема только Оперы???
Я устал повторять, что не вижу динамического моря ни в Макстоне (он тоже выдаёт "скрипт эррор"), ни даже в Эксплорере.
вам не видать динамического моря в принципе, опера 7.5 не умеет XMLHttpRequest в принципе (техника, необходимая для работы этого моря)
А исправить скрипт — первые два варианта именно исправление скрипта, 3 и 4 — лишь workAround (способы обхода проблемы без её решения)
макстоном не пользуюсь, равно как и ие, потому ничего сказать не могу.
А почему раньше я его видел? И специально так настроил, чтобы мне удобно было лишнего не грузить. И всё работало!
макстоном не пользуюсь, равно как и ие, потому ничего сказать не могу.
А вот вы попробуйте ради интереса и чистоты эксперимента какой-нибудь другой браузер. Работает ли море?
не знаю, я никогда не пользовался динамическим тегом, мне не жалко загрузить море вместе с остальной френдлентой.
Это я сейчас специально поставил, ибо попросили разобраться с проблемой.
А вот вы попробуйте ради интереса и чистоты эксперимента какой-нибудь другой браузер. Работает ли море? Под FireFox тоже, говорят, не работает. Это не только Оперы проблема.
а зачем мне?
Сейчас у меня работает всё.
то что это бага дневников, я и так знаю, и не нуждаюсь в дополнительных исследованиях.
проверять работает ли где ещё — а смысл, всё равно я править не буду, хоть оно трижды сломано
не знаю, я никогда не пользовался динамическим тегом, мне не жалко загрузить море вместе с остальной френдлентой.
Это жутко неудобно - каждый раз лезть в комментарии, чтобы прочитать то, что скрыто под морем. И на это тратится лишний трафик.
я не говорил про комментарии.
есть ещё и третий вариант, загрузить more вместе с френдлентой, тогда при нажатии на тег, он просто проявится (всё равно, 99% more я открываю)
2нос:
не за что
Ага. Уже успел порадоваться. Прямо не поверил, когда тыкнул во фленте, и как надо сработало. А его, оказывается, и правда починили.
Спасибо.
Тогда спасибо и Kildor'у, нашедшему ошибку, и тем, кто её исправил. Ведь не он же исправлял...
да, исправлено
Спасибо за оперативность, и спасибо Глюкеру