Проблема:
Если в настройках выбран «динамически подгружаемый тег 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 — смотрите в комментарии к записи
надеюсь что кому-то поможет…