Проблема:

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



надеюсь что кому-то поможет…