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 — смотрите в комментарии к записи



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

Комментарии
18.08.2006 в 21:54

Расставим все точки над Ё!
Ну я вот тоже некрофил. И Опера у меня седьмая с половиной. И динамического моря, как я понял, не видать мне, как своих ушей... Даже если бы я разобрался, куда и как эти скрипты вставлять (а для меня это китайская грамота).



Не проще ли исправить скрипт дайрей, чем каждому пользователю править Оперы? Ведь раньше так не было, море нормально подгружалось. *риторический, видимо, вопрос*



И последнее. Почему упорно считается, что это проблема только Оперы???

Я устал повторять, что не вижу динамического моря ни в Макстоне (он тоже выдаёт "скрипт эррор"), ни даже в Эксплорере.

18.08.2006 в 22:11

Homo virtualis группа [γ]
2Suzume:

вам не видать динамического моря в принципе, опера 7.5 не умеет XMLHttpRequest в принципе (техника, необходимая для работы этого моря)

А исправить скрипт — первые два варианта именно исправление скрипта, 3 и 4 — лишь workAround (способы обхода проблемы без её решения)



макстоном не пользуюсь, равно как и ие, потому ничего сказать не могу.
18.08.2006 в 22:21

Расставим все точки над Ё!
вам не видать динамического моря в принципе, опера 7.5 не умеет XMLHttpRequest в принципе (техника, необходимая для работы этого моря)

А почему раньше я его видел? И специально так настроил, чтобы мне удобно было лишнего не грузить. И всё работало!



макстоном не пользуюсь, равно как и ие, потому ничего сказать не могу.

А вот вы попробуйте ради интереса и чистоты эксперимента какой-нибудь другой браузер. Работает ли море? :) Под FireFox тоже, говорят, не работает. Это не только Оперы проблема.
18.08.2006 в 22:34

Homo virtualis группа [γ]
2Suzume:

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



Это я сейчас специально поставил, ибо попросили разобраться с проблемой.



А вот вы попробуйте ради интереса и чистоты эксперимента какой-нибудь другой браузер. Работает ли море? Под FireFox тоже, говорят, не работает. Это не только Оперы проблема.

а зачем мне?

Сейчас у меня работает всё.

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

проверять работает ли где ещё — а смысл, всё равно я править не буду, хоть оно трижды сломано ;)
18.08.2006 в 23:07

Расставим все точки над Ё!
Kildor

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

Это жутко неудобно - каждый раз лезть в комментарии, чтобы прочитать то, что скрыто под морем. И на это тратится лишний трафик.
18.08.2006 в 23:09

не все напрасно
Хорошо, спасибо, Kildor
19.08.2006 в 06:49

Homo virtualis группа [γ]
2Suzume:

я не говорил про комментарии.

есть ещё и третий вариант, загрузить more вместе с френдлентой, тогда при нажатии на тег, он просто проявится (всё равно, 99% more я открываю)



2нос:

не за что ;)
19.08.2006 в 22:48

не все напрасно
Тег [ more] - вроде исправили, проверьте в Опере.

19.08.2006 в 22:51

Расставим все точки над Ё!
нос

Ага. Уже успел порадоваться. Прямо не поверил, когда тыкнул во фленте, и как надо сработало. А его, оказывается, и правда починили.

Спасибо. :)
19.08.2006 в 22:55

не все напрасно
Kildor'у - спасибо и gluker:)

19.08.2006 в 22:57

Расставим все точки над Ё!
нос

Тогда спасибо и Kildor'у, нашедшему ошибку, и тем, кто её исправил. Ведь не он же исправлял... :)
19.08.2006 в 23:30

Homo virtualis группа [γ]
2нос:

да, исправлено ;)

Спасибо за оперативность, и спасибо Глюкеру ;)
20.08.2006 в 13:58

Большое спасибо Kildor, в огнелисе все тоже заработало.