Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   jQuery при XSLT преобразованиях на клиенте (https://javascript.ru/forum/xhtml-html-css/8674-jquery-pri-xslt-preobrazovaniyakh-na-kliente.html)

Родзевич Олег 08.04.2010 15:08

jQuery при XSLT преобразованиях на клиенте
 
Всем привет!
Я делаю следующее:
Клиенту передаю XML, в шапке указан XSLT шаблон
В шаблоне указан ряд javascript'ов, которые в общем случае работают. Но когда указывается jQuery ломается и всё перестаёт работать.

Помогите решить проблему.
В FireBug следующие ошибки:
Код:

....loading....
        0        Запущен
        0        0        DNS-запрос
        0        0        Подключение
        0        0        Блокирование
        0        0        Отправка
        0        78ms        Ожидание
        +78ms        0        Получение
Был достигнут лимит журнала сообщений Firebug. 0 вхождение не отображается.                Настройки лимита       
Firebug cannot find _firebugConsole element true Window index.php?table=lots1
Firebug cannot find _firebugConsole element true Window index.php?table=lots1
Firebug cannot find _firebugConsole element true Window index.php?table=lots1
Firebug cannot find _firebugConsole element true Window index.php?table=lots1
d.style is undefined
[Break on this error] true;if(ya)c.inArray=function(a,b){ret....55;'>a</a><input type='checkbox'/>";
jquery....min.js (строка 33)
$ is not defined
[Break on this error] $(function(){
init.js (строка 124)


x-yuri 08.04.2010 17:24

выясни, что именно вызывает ошибку. Подключения JQuery достаточно, чтобы возникла ошибка? Поставь временно несжатый jquery и выясни, в какой именно строке возникает ошибка

subzey 08.04.2010 17:32

Добавлю вопросов: в опере и гуглохроме тот же код работает?

Родзевич Олег 08.04.2010 21:52

Вообще пытался проблему решить на форуме jQuery
http://www.linkexchanger.su/forum/vi...&t=302&start=0
Но мне там не помогли.
В не сжатом состоянии получается такая ошибка
Код:

div.style is undefined
[Break on this error] div.style.display = "none";
jquery-latest.js (строка 834)

Что касается браузеров, то в Опере работает нормально, а вот в Хроме возникают те же ошибки.

subzey 08.04.2010 22:09

У Firefox раньше была проблема с XSLT — скрипты запускались в исходном дереве, а не в сгенерированном. Как сейчас — не знаю, увы, но, возможно, она и осталась. Но, по крайней мере, очень похоже.
Попробуйте подключение скрипта завернуть в <![CDATA[:
<![CDATA[<script type="text/javascript" src="/js/lib/jquery.js"></script>]]>

Родзевич Олег 08.04.2010 22:20

Завернул, ошибок jQuery больше не стало, по моему его вообще не стало ...
Код по прежнему не работает

x-yuri 08.04.2010 23:43

Цитата:

Сообщение от Родзевич Олег
по моему его вообще не стало

:haha:

похоже ошибка возникает при инициализации jQuery. Kolyaj что-то говорил про урезанный DOM в XML, посмотри, есть ли у div свойство style. Думаю надо будет либо фиксить jQuery, либо отказываться от нее

Или это я из статьи взял:
Цитата:

Заметьте, что в последнем примере, xml-лизированы только svg-элементы, а все прочие оставлены в качестве html. Это связано с тем, что xml-элементы из незнакомых браузеру пространств имён обладают крайне убогой объектной моделью в яваскрипте. В частности, у них нет волшебных свойств style, innerHTML и многих других.
http://mojura.110mb.com/?article:kill.html

Родзевич Олег 09.04.2010 01:50

Походу дело тогда совсем тухлое, плохо

x-yuri 09.04.2010 02:51

а зачем xml передавать? Что там вообще происходит?

Родзевич Олег 09.04.2010 03:20

Я хотел сократить трафик и для генерации страниц использовать XSLT на стороне клиента
Геморой вообще дело не излечимое, если уж гемороишься, то приходится разбираться до конца
Был бы неплохой вариант, если он конечно существует, пофиксить это на уровне правильного использования технологий. Мне кажется что я где-то ошибаюсь и что-то неправильно делаю

x-yuri 09.04.2010 06:51

Цитата:

Сообщение от Родзевич Олег
Мне кажется что я где-то ошибаюсь и что-то неправильно делаю

ну, первое, что ты неправильно сделал, это попытался сократить траффик с помощью xml. Причем причин для этого не было, так? Теоретически он может это сделать. И мне даже интересно было бы узнать о реальном примере экономии трафика, но увы, пока что не приходилось. Да и не для того он создавался. Мы где-то тут спорили уже с B~Vladi, но не было реального примера, на котором можно было бы увидеть результат... И чего это мы на скорости там зациклились так? Другие плюсы оказались не плюсами что ли? :haha:

в статье выше вон автор тоже пытается коснуться будущего, (шутя) правда забывает упомянуть, что нужно не забыть убрать руку в скором времени, ибо рано

offtop: наткнулся тут на интересную статью в википедии
Цитата:

Not Invented Here (NIH) is a term used to describe persistent social, corporate or institutional culture that avoids using or buying already existing products, research or knowledge because of their external origins. It is normally used in a pejorative sense, and may be considered an antipattern. The opposite culture is sometimes denoted Proudly Found Elsewhere (PFE)[citation needed] or Invented Here.
p.s. Преждевременная оптимизация - корень всех зол

subzey 09.04.2010 13:47

Цитата:

Сообщение от Родзевич Олег
Я хотел сократить трафик и для генерации страниц использовать XSLT на стороне клиента

Я тоже с этим баловался. Результат получился не такой уж и потрясающий — если загружается документ (x)html, то его можно показывать, пока он еще не догружен до конца, в случае xhtml/xml + xslt необходимо ждать, пока подгрузится и тот и другой. Так что в итоге я только проиграл.

ЗЫЖ а для SEO (которое именно Search Engine Optimization, а не грязные трюки, вытворяемые постсоветскими «сеошниками») xhtml + xslt просто чудесно. :)

x-yuri 09.04.2010 14:04

Цитата:

Сообщение от subzey
ЗЫЖ а для SEO (которое именно Search Engine Optimization, а не грязные трюки, вытворяемые постсоветскими «сеошниками») xhtml + xslt просто чудесно.

а в чем чудесность?

subzey 09.04.2010 15:28

Исключаем шаблон из разметки и повышается плотность ключевых слов (она считается, по крайней мере, яндексом к размеру документа, а не текстовой части документа),
уменьшается вложенность тегов (это для гугля),
можно передвинуть контент в начало страницы (опять-таки, для гугля).
Легальный клоакинг: нафигацию можно сделать под «быстроссылки» забудьте о том, что я тут написал. ^.^

B~Vladi 09.04.2010 22:47

x-yuri, в своё время мне xslt помог сэкономить пару килобайтов (копейки, в курсе). Но у меня есть идея, ещё бредовее xslt, так что ждите постов:)

PS: инструментом нужно пользоваться грамотно... это инструмент... какой бы он нибыл...

x-yuri 09.04.2010 23:30

Цитата:

Сообщение от B~Vladi
Но у меня есть идея, ещё бредовее xslt, так что ждите постов

:)

B~Vladi 10.04.2010 00:19

:)
x-yuri, вот например ты...
Ты за профессиональный код? Говнокод есть зло?!
Мне мало jQuery... Под него не создать ни одного теста... Да и вообще... Пора начинать писать грамотно епт... Много раз видел конструкции типа:
$(this).eq(0).attr({'checked':'false'});

Нет ни одного мануала о "правилах этикета" кодинга... Такое говно приходиться разгребать...

x-yuri 10.04.2010 18:06

Цитата:

Сообщение от B~Vladi
Ты за профессиональный код? Говнокод есть зло?!

странный вопрос. Хочу ли я писать лучше? Естественно. Хочу ли я, чтобы говнокода не было? Нет, все с него начинают, но кто-то идет дальше, а кто-то... становиться менеджером, может :)

Цитата:

Сообщение от B~Vladi
$(this).eq(0).attr({'checked':'false'});

а что в этом плохого?

Цитата:

Сообщение от B~Vladi
Нет ни одного мануала о "правилах этикета" кодинга...

вот только недавно читал Стиль есть содержание (Джоел Х. Спольски, Лучшие примеры разработки ПО (djvu))
я бы сказал, что их слишком много. Да и что именно ты вкладываешь в "правила этикета кодинга"?

B~Vladi 10.04.2010 20:37

Цитата:

Сообщение от x-yuri
а что в этом плохого?

Да не, всё отлично.
Цитата:

Сообщение от x-yuri
я бы сказал, что их слишком много

Статей или книг?
Цитата:

Сообщение от x-yuri
Да и что именно ты вкладываешь в "правила этикета кодинга"?

Лень расписывать:)

x-yuri 10.04.2010 21:46

Цитата:

Сообщение от B~Vladi
Да не, всё отлично.

вот и поговорили

Цитата:

Сообщение от B~Vladi
Статей или книг?

я имел в виду скорее "правил этикета" или мнений на тему. И это скорее про правила оформления кода. Но раз ты не уточняешь, что такое правила этикета...

Цитата:

Сообщение от B~Vladi
Лень расписывать

в прошлый раз, когда тебе было лень расписывать, это закончилось так:
Цитата:

Сообщение от B~Vladi
x-yuri, в своё время мне xslt помог сэкономить пару килобайтов (копейки, в курсе)

;)

B~Vladi 10.04.2010 22:06

Цитата:

Сообщение от x-yuri
И это скорее про правила оформления кода.

Нет я про API и все дела.
Цитата:

Сообщение от x-yuri
в прошлый раз, когда тебе было лень расписывать, это закончилось так:

Ну что ж поделать...

B~Vladi 10.04.2010 22:07

Цитата:

Сообщение от x-yuri
вот и поговорили

Ну если ты тоже так считаешь, то нам действительно неочем говорить.

x-yuri 10.04.2010 23:05

Цитата:

Сообщение от B~Vladi
Ну если ты тоже так считаешь, то нам действительно неочем говорить

я не знаю, как считаешь ты. А именно, что там плохого. Может я не заметил

Цитата:

Сообщение от B~Vladi
Нет я про API и все дела

и какое же должно быть API? Хотя бы в том куске кода?

p.s. но если ты такой ленивый, то говорить действительно не о чем

B~Vladi 10.04.2010 23:26

Цитата:

Сообщение от x-yuri
А именно, что там плохого.

То, что можно сделать:
this.checked = false;

Цитата:

Сообщение от x-yuri
и какое же должно быть API?

Оно вообще должно быть. И желательно чтоб всё было логично и расширяемо. К этому относиться и использование inline скриптов и засирание window.

Цитата:

Сообщение от x-yuri
но если ты такой ленивый, то говорить действительно не о чем

Ну уж не прям в конец. Мне проще в скайпе рассказать.

x-yuri 11.04.2010 00:17

Цитата:

Сообщение от B~Vladi
То, что можно сделать:
this.checked = false;

вне контекста, не вижу в том коде ничего плохого. Если уж мы подключили jQuery и еще, возможно, кучу плагинов, вряд ли пользователь заметит однократное выполнение "$(this).eq(0).attr({'checked':'false'});". Я считаю, нужно не все подряд оптимизировать, а то, что действительно влияет на производительность. Да и они ж себя не как дополнение к js позиционируют, а фактически как обертку над DOM

Цитата:

Сообщение от B~Vladi
Оно вообще должно быть. И желательно чтоб всё было логично и расширяемо. К этому относиться и использование inline скриптов и засирание window.

API там есть. Но только оно ориентировано скорее на "быстро сделать что-нибудь с DOM". Для более сложных задач не подходит. Я уже где-то оставлял ссылку на jQuery vs MooTools, правда там на англ

Цитата:

Сообщение от B~Vladi
К этому относиться и использование inline скриптов и засирание window.

ну сначала они так делают, но потом, надеюсь, учаться на ошибках


Часовой пояс GMT +3, время: 10:19.