Показать сообщение отдельно
  #1 (permalink)  
Старый 15.02.2009, 03:24
Аватар для kotkerk
Новичок на форуме
Отправить личное сообщение для kotkerk Посмотреть профиль Найти все сообщения от kotkerk
 
Регистрация: 15.02.2009
Сообщений: 7

событие должно возникать при определенных условиях
приветствую всех
===
пытаюсь подрихтовать один скрипт (скрипт не мой, стащил с другого форума), но т.к. в JS не силен (в основном PHP), поэтому слабо получается
что у нас есть
ф-я fetch_object(obj) - описана в файле vbulletin_global.js
ф-я fetch_tags(parentObj, tag) - описана в файле vbulletin_global.js
ф-я get_e(e):
function get_e(e)
{
     return (e) ? e : (window.event) ? event : null;
}

ф-я who_fired_event(e):
function who_fired_event(e)
{
      e = get_e(e);
      if(!e) 
      {
           return;
      }
      var targ = (e.target) ? e.target : (e.srcElement ? e.srcElement : null);
      if(targ && targ.nodeType == 3)
      { 
           targ = targ.parentNode;
      }
      return targ;
}

есть объект (это тело сообщения любого поста темы)
var Obj = fetch_object('post_message_' + postid);


есть таржет
var postObj = who_fired_event(evt);


<div id="post_message_$post[postid]">
	$ad_location[ad_showthread_firstpost_start]
	$post[message]
</div>

что нужно
что бы событие onclick срабатывало только внутри этого "дива" и во всех его потомках и нигде больше
так собсно в чем вопрос, как правильно создать условие, что бы было именно так, а не иначе
что пробовал
3 дня мучил гугля в поисках готового решения
пробовал сам запихать в цикл for() объект и пройтись по всем его чилдам заключая в условие только типы (nodeType) 1 и 3
событие срабатывает, но только если это текст поста, если в посте есть так же и включенные теги, например бб-коды полужирный текст или наклонный или любой другой, событие не срабатывает
дебаг делал при помощи ф-ии
function echo(obj, str)
{
     var obj = fetch_object(obj);
     obj.innerHTML += str;
}

подключая как объект прописанный в шаблоне (postbit_legacy) пустой див
<div id="p_$post[postid]"></div>

вызывается так
var p = fetch_object('p_' + postid);
echo(p.id, string);

без всех этих телодвижений скрипт работает нормально, пример на моем форуме (ссылка в профиле) выделить текст в посте, появится окошко "цитировать", кликнув на которое, выделенный текст вставляется в форму быстрого ответа с ником пользователя этого поста и ID этого поста
примерно так
[quote=nickname;123456]выделенный текст[/quote]

этот скрипт, доработка (+микс с другим) того, что установлен на этом форуме
скрипт работает естессно только когда заходишь, как пользователь, гостям недоступно
===
если кто не зареган там или лениво, то вот картинка, как это выглядит


Последний раз редактировалось kotkerk, 15.02.2009 в 04:56.
Ответить с цитированием