Да ... не перевелись ещё умельцы на юкоз ... постоянно радует глаз прямота их “скриптов и хаков”
Ладно не будем обижать автора скрипта))), то что написано мной в сообщении - исковерканное мной произведение искусства . Короче говоря оригинал был вполне нормальным, а то что выше - переделалось мной по ходу написания сообщения. Пойду читать статьи про ява-скрипты =\
Quote (likbezz)
ID - это уникальный (единственный в своем роде) элемент в пределах страницы
Да.. да.. знаю, но вот пока писал сообщение, а с ним и переделывал скрипт, это не учел)
Quote (likbezz)
))) - а я что предложил? - те же яйца, только в профиль - пользователь должен совершить клик.
Ну в принципе да... А стандартному аякс окну юкоз (uWnd) реально абсолютное позиционирование задать и что бы по тому же клику, что и вызвано, оно закрывалось (дабы не выводить кнопок "закрыть"\"скрыть"\"развернуть")?
Сообщение отредактировал Elones - Суббота, 13.08.2011, 00:06
Конечно не будем ... ))) Тем более - это не оскорбление, на что можно (в оч. редких случаях) обидеться, а просто констатация фактов. ...
Quote (Elones)
Короче говоря оригинал был вполне нормальным
Очень сомневаюсь, так как ни один скрипт, который запихнули в (!!!!!!) шаблон вида материала (поста), не может быть “нормальным”. Многократное повторение одного и того же в коде - это НЕ нормально. (Кроме оОочерь редких случаев, что к данному скрипту никак не относится) ... ...
Quote (Elones)
Да.. да.. знаю, но вот пока писал сообщение, а с ним и переделывал скрипт, это не учел)
А вообще, привязывать изначально множественные объекты по ID ... это как-то не очень, если можно так сказать .... ))) Тем более, задавать стили через ID, причём одинаковые ....
Quote (Elones)
А стандартному аякс окну юкоз (uWnd) реально абсолютное позиционирование задать и что бы по тому же клику, что и вызвано, оно закрывалось (дабы не выводить кнопок "закрыть"\"скрыть"\"развернуть")?
Возможно, но суть примера была не в этом, а в том что бы получить определённые данные из удалённой страницы. Вывести же их можно куда угодно - хоть под аватар - что, кстати, гораздо проще, чем в окошко, хоть в любое другое место - там главное принцип ...
likbezz, оригинал - это был скрипт информера сообщений с форума:
Данный скрипт ни чем не лучше твоего варианта. Всё те же ошибки:
Quote (likbezz)
ни один скрипт, который запихнули в (!!!!!!) шаблон вида материала (поста), не может быть “нормальным”. Многократное повторение одного и того же в коде - это НЕ нормально
- Это делается гораздо проще - вся эта муть выносится в одну отдельную функцию - в шаблоне остаётся только блок для контента ... И всё.
Quote (Elones)
Я даже подобного и нигде не видел...
Улыбнуло. Интересно, а как вы пришли к мысли, что если вы «это» не видели, то «этого» нельзя (сложно, затруднительно, невозможно) сделать? Так или иначе - любая функция однажды бывает написана первой ... тем более такие специфические, как управление юВинд окнами ...
Так ведь оператор $NUMBER$ не повторяется(в информере это цифры по порядку от "1" и более), а значит и ID будет каждый раз разным, но вот зачем там классу прописан был оператор, я хз)) Как вариант в шаблоне вида материалов, можно использовать оператор $ID$, который так же не повторяется... ------ Так, что ли?)
Попытался еще и таймаут приписать, но знаний не хватило... И кстати, если $ID$ не прописывать, то действует только для 1го сообщения.
Добавлено (13.08.2011, 03:04) --------------------------------------------- В вашем шаблоне надо бы классу codeMessage прописать ширину, а то если вдруг код содержит достаточно длинную строку, то в Firefox (6) вся страница едит и причем прокрутки по горизонтали тогда нет..
Сообщение отредактировал Elones - Суббота, 13.08.2011, 03:20
- Всё. И больше ничего. Остальное убирается в функцию, вызываемую при клике. ...
Quote (Elones)
В вашем шаблоне надо бы классу codeMessage прописать ширину, а то если вдруг код содержит достаточно длинную строку, то в Firefox (6) вся страница едит и причем прокрутки по горизонтали тогда нет..
Да, я знаю. Но не хочу вписывать фиксированную ширину блоку, а на относительную руки не доходят )
Quote (Elones)
то в Firefox (6) вся страница едит и причем прокрутки по горизонтали тогда нет..
Это что? - Мозилла шестая вышла? ... да ладно ... И кроме того, не “вся страница едит”, а только один пост ..... Или киньте скриншот - гляну чё за байда ...
P.S. Надо будет, кстати, заняться .... ...
Quote (likbezz)
Но не хочу вписывать фиксированную ширину блоку, а на относительную руки не доходят )
Нет ..... Вот так: Это скрипт - один раз в шаблон вид форума, через условные операторы.
Code
<script type="text/javascript"> function getByProfInfo(b,u){ var c=$('#mb'+b),url='/index/8-'+u; if(c.is(':hidden')){ if(c.is(':empty')){ c.html('<img src="/.s/img/icon/ajsml.gif" />'); $.get(url,function(d){var a='';a+=$('#block1',d).html();a+='<hr />';a+=$('#block22',d).html();a+='<hr />';a+=$('#block21 div:eq(1)',d).html();c.html(a)})}; c.show()}else{c.hide()}}; </script>
Где: getByProfInfo(b) - передаём в скрипт ID - $ID$ ... var c=$('#mb'+b),url='/index/8-'+u; - устанавливаем переменные: c - для блока с контентом и url - для адреса запроса (страница профиля) if(c.is(':hidden')) - проверяем, открыт ли блок с контентом .... if(c.is(':empty')) - проверяем: пустой блок с контентом, или там уже есть инфа и делать повторный запос не нужно. __c.html('<img src="/.s/img/icon/ajsml.gif" />'); - если пустой - c.is(':empty') - пихаем в него картинку загрузки и .... »»» __$.get(url,function(d){ .... }); .... и совершаем запрос на страницу профиля .... и ... »»» c.show() - открываем блок с контентом. Если он не пустой (с данными из профиля) - просто открываем. c.hide() - если блок уже открыт - закрываем. .... ....
Это - в шаблон вид поста - под аватар и ли куда нужно.
- Все необходимые блоки к которым совершается запрос должны быть (присутствовать в профиле), либо нужно делать проверку на наличие, иначе будет выводить «null» - например, если у пользователя нет подписи - а в примере я совершаю запрос и к блоку с подписью тоже .... ...
Опять же, это всего лишь пример, а не готовый код для вставки ... ....
Скорее всего, у вас старый кеш. Так как изменения в стили внёс недавно ... В пятой нормально (спецом установил), следовательно и в остальных тоже.
...
Quote (Elones)
Во блин) А мой вариант (если функцию таймаута убрать) тоже работал
- Который с окном? - вы ж, вроде говорили что с окном не айс ... Но можно и с окном .... переделать немного - вместо функции «показать блок» - открыть окно, а вместо «закрыть блок» - закрыть окно .... Вот только с окном, запрос будет происходить каждый раз при активации (клике) а в данной функции - блок с контентом заполняется однажды, а дальше просто работает как переключатель - показать/скрыть .... ...
вы ж, вроде говорили что с окном не айс ... Но можно и с окном .... переделать немного - вместо функции «показать блок» - открыть окно, а вместо «закрыть блок» - закрыть окно ....
Не айс) Просто я подумал, что вообще не правильно вписал. Ну ладно, не важно в принципе)
Quote (likbezz)
а в данной функции - блок с контентом заполняется однажды, а дальше просто работает как переключатель - показать/скрыть ....
<script type="text/javascript"> function getByProfInfo(b){ var c=$('#mb'+b),url='/index/8-'+b; if(c.is(':hidden')){ if(c.is(':empty')){ c.html('<img src="/.s/img/icon/ajsml.gif" />'); $.get(url,function(d){var a='';a+=$('#block1',d).html();a+='<hr />';a+=$('#block22',d).html();a+='<hr />';a+=$('#block21 div:eq(1)',d).html();c.html(a)})}; c.show()}else{c.hide()}}; </script>
Я ща моск себе поломаю В скрипте "/index/8-" и в вашем примере заданны абсолютные ссылки, а как же c /index/8-$UID$ прописать? Если просто добавить, то выводит null
А если еще и в оператор pageid засунуть скрип, то он перестает работать
Добавлено (14.08.2011, 02:08) --------------------------------------------- Все, разобрался) Ваш пример с $ID$ меня сбил )) Надо было $UID$ вместо этого прописывать) Но операторы все равно нельзя
Вот у меня была "мысля", что можно в скрипте больше 1й переменной
В принципе, пожно было обойтись одной - UID, но велика вероятность того, что два поста одного пользователя будут на одной странице ... ) ... Так что, лучше так - ID блока - отдельно, ID юзера - отдельно ...