[Ликбез]

Форма входа

Меню сайта



Как сделать профили в аякс (юВинд) окне?
[1] Гость [26.03.2011, 16:07]
Как сделать профили в аякс (юВинд) окне?
Есть ссылка такого плана http://forucoz.com/openLayerA.js
но окно открывается не плавно как остальные ювинд и работает только для отдельных ссылок, а хотелось бы, что бы все профили открывались в ювинд.
Можно это как-то сделать? Спасибо.
[2] likbezz [01.08.2011, 04:12]
Quote (Гость)
Как сделать профили в аякс (юВинд) окне?

Дословно цитирую, да простит меня автор: G-XPert
Пост от 02 Января 2010, 09:36 | Сообщение # 1

Quote (G-XPert)
Расскажу как сделать такие-же окна как тут. Казалось бы создать аякс окно просто, new _uWnd и все дела, НО если нам например нужно сделать чтобы профиль пользователя, ссылка на который стоит в коде $BODY$ открывался в аякс окне?

1. Разберем на примере страницы со списком пользователя.

1. Первое что мы делаем $BODY$ заменяем на: <div class="ajax">$BODY$</div>
2. Дальше перед кодом </body> или после $BODY$ ставим следующий скрипт:


Code
<script type="text/javascript">$('.ajax a').bind('click',function(){new _uWnd('ajax','Загрузка...',800,350,{closeonesc:1,autosize:1,autosizeonimages:1},{xml:false,dataType:'html',url:this.href});$.get(this.href,{},function(data){if(data.search(/<title>(.+)<\/title>/i)) _uWnd.getbyname('ajax').setTitle(RegExp.$1);});return false;})
</script>


Quote (G-XPert)
Теперь окна стоящие внутри кода $BODY$ будут открываться в аякс окне, как тут.

2. Теперь разберём на примере, когда нам нужно сделать чтобы не все ссылки стоящие в коде $BODY$ открывались в аякс окне:

1. Разберём на примере форума, допустим, в колонке "Обновления", где "Сообщение от: $USERNAME$" нам нужно сделать чтобы профиль открывался в аякс окне. Смотрим исходный код и видим что ссылка имеет класс lastPostUserLink.
2. Теперь, когда мы узнали класс, также перед кодом </body> или после $BODY$ ставим следующее:


Quote (JS)
<script type="text/javascript">$('.lastPostUserLink').bind('click',function(){new _uWnd('ajax','Загрузка...',800,350,{closeonesc:1,autosize:1,autosizeonimages:1},{xml:false,dataType:'html',url:this.href});$.get(this.href,{},function(data){if(data.search(/<title>(.+)<\/title>/i)) _uWnd.getbyname('ajax').setTitle(RegExp.$1);});return false;})
</script>

Где:
lastPostUserLink - класс ссылки, что будем обрабатывать скриптом.
Возможен множественный вариант, типа: $('.lastPostUserLink,.newPostUserLink'). ....
bind('click',function(){} - действие (функция) при клике.
new _uWnd('') - создаём аякс окно.
f(data.search(/<title>(.+)<\/title>/i)) _uWnd.getbyname('ajax').setTitle(RegExp.$1);} - заменяем титле в аякс окне на подгружаемый.
return false; - отменяем действие по умолчанию.


Имно - не самый полезный и грамотный скрипт. Но с заменой титле придумано оригинально .... ) Респект автору.


Сообщение отредактировал likbezz - Понедельник, 01.08.2011, 04:12
[3] Fiddle [19.05.2014, 03:16]
Доброго времени суток, прошу прощения, что не создал отдельную тему ( нет прав) и лезу в чужую, но по сути вопрос схожий.
Суть моего вопроса:
Как сделать, чтобы все профили внутри $BODY$, а так же внешние от этого оператора( рукописные) ссылки на профили пользователей открывались не в uwnd окне, а появлялся блок с абсолютном позиционированием, скажем, в верхнем правом углу сайта? Выражаясь технически, мне нужна функция, которая вызывает появление скрытого блока содержимое которого фрейм, а именно, непосредственно фрейм со страницы профиля пользователя, который вас интересует.
Проще говоря, нужно заменить появление в ajax на появление обычного блока.
Заранее благодарю всех, кто попытается помочь!
[4] likbezz [19.05.2014, 06:08]
Fiddle,
Цитата Fiddle, Пн, 19.05.2014, 03:16:52
Выражаясь технически, мне нужна функция, которая вызывает появление скрытого блока содержимое которого фрейм, а именно, непосредственно фрейм со страницы профиля пользователя, который вас интересует.

Сделать-то несложно..
Типа:
http://likbezz.ru/_example/_rest/_2014/p1/profile_frame.html
Код
<!--Start()-->
<style type="text/css">
#frameBox{
     width:500px;
     height:300px;
     position:absolute;
     right:0;
     top:0;
}
.framePro{
     width:100%;
     height:100%;
}
</style>
<script type="text/javascript">
function frameBox(id){
     $('body').append('<div id="frameBox"><iframe src="http://likbezz.ru/index/8-'+id+'" class="framePro"></iframe></div>');
}
</script>
<a href="javascript://" onclick="frameBox('1466');return false;">Fiddle</a>
<!--//End()-->

Но тут технический вопрос: как вы его собираетесь закрывать?

Цитата Fiddle, Пн, 19.05.2014, 03:16:52
Проще говоря, нужно заменить появление в ajax на появление обычного блока.

Тут уже уточняющий вопрос: для чего это?
[5] Fiddle [19.05.2014, 23:45]
likbezz, благодарю за отзывчивость!
Цитата likbezz
Сделать-то несложно..
Типа:
☑ http://likbezz.ru/_example/_rest/_2014/p1/profile_frame.html

Идеально, то что нужно!

Цитата likbezz
Но тут технический вопрос: как вы его собираетесь закрывать?


Если вам не сочтет труда, прикрутите по ссылке в области этого самого блока, либо по клику вне области. Я бы сделал сам, но ,к сожалению, я js плоховат, поэтому вот клянчу помощи у более знающих людей в этом вопросе)

Цитата likbezz
Тут уже уточняющий вопрос: для чего это?


Издержки дизайна)
[6] likbezz [05.06.2014, 23:50]
Цитата Fiddle, Пн, 19.05.2014, 23:45:38

Если вам не сочтет труда, прикрутите по ссылке в области этого самого блока, либо по клику вне области. Я бы сделал сам, но ,к сожалению, я js плоховат, поэтому вот клянчу помощи у более знающих людей в этом вопросе)

Типа так:
http://likbezz.ru/_example/_rest/_2014/p1/profile_frame2.html
[7] Fiddle [23.07.2014, 04:52]
likbezz, огромное вам человеческое спасибо! Только вот, единственная проблема, как сделать, чтобы абсолютно все профили на сайте открывались в данном блоке, а не по ссылке =(

Сообщение отредактировал Fiddle - Среда, 23.07.2014, 05:15
[8] likbezz [29.07.2014, 10:17]
Fiddle,
Цитата Fiddle, Ср, 23.07.2014, 04:52:00
Только вот, единственная проблема, как сделать, чтобы абсолютно все профили на сайте открывались в данном блоке, а не по ссылке =(

Найти все ссылки на профиль (скриптом) и прописать им данную функцию.
Найти можно перебором, по фрагменту «index/8-» ... ну а функцию повесить как обычно - $.click
[9] Fiddle [29.07.2014, 12:59]
likbezz, как то так ? Не подскажите более верный вариант, пожалуйста .

Код
$('a[href*="/index/8-"]').click(function(){
$('body').append('<div id="frameBox"><iframe onload="frameBoxHide();" src="http://likbezz.ru/index/8-'+id+'" class="framePro"></iframe></div>');
}
function frameBoxHide(){
$('html').click(function(){
$('#frameBox').remove();
$(this).unbind('click');
});
}


Я полагаю нужно заменить как - то :
Код

src="http://likbezz.ru/index/8-'+id+'"


Сообщение отредактировал Fiddle - Вторник, 29.07.2014, 13:00
[10] likbezz [30.07.2014, 08:16]
Fiddle,
Цитата Fiddle, Вт, 29.07.2014, 12:59:56
как то так ?

Ну да, как-то так..

Код
$(document).ready(function(){
$('a[href*="/index/8-"]').click(function(){
$('#frameBox').remove();
$('body').append('<div id="frameBox"><iframe onload="frameBoxHide();" src="http://likbezz.ru/index/8-'+this.href.split('-')[1]+'" class="framePro"></iframe></div>');
return false;
});
});
function frameBoxHide(){
$('html').click(function(){
$('#frameBox').remove();
$(this).unbind('click');
});
}


http://likbezz.ru/_example/_rest/_2014/p1/profile_frame3.html
[11] Fiddle [31.07.2014, 00:09]
likbezz, благодарю


Полная версия сайта