Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2009, 02: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 в 03:56.
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2009, 02:47
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Это не поможет!? Или я что то не так понял!?
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2009, 02:55
Аватар для kotkerk
Новичок на форуме
Отправить личное сообщение для kotkerk Посмотреть профиль Найти все сообщения от kotkerk
 
Регистрация: 15.02.2009
Сообщений: 7

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

ок, с этим разобрался другим путем, просто добавив в сам шаблон к ID этого дива
onmouseover="if(typeof obj == 'object'){obj.valid = true;}" onmouseout="if(typeof obj == 'object'){obj.valid = false;}"

с проверкой в скрипте на true/false
коряво, да, знаю, но работает именно так мне нужно во всех браузерах, которые у меня на компе для этих целей (опера, лис, сафари, хром, ИЕ6) =)
может кто подскажет более изящное решение?...
===
ладно, одной проблемой меньше, теперь другое с этим же скриптом, тут я совсем "плаваю" =)
если на странице есть объекты Drag&Drop, то после того, как хотябы коснулся мышкой этого объекта, скрипт перестает работать, Firebug не пишет никаких ошибок, просто ни-че-го... поэтому не могу понять, где ошибка и ошибка ли это?
после F5 все опять нормально работает
скрипт (Drag&Drop) использую с сайта http://www.dynamicdrive.com dom-drag.js
самый маленький, который смог найти в инете (3,84Кб), все остальное - громоздкие фреймворки, которые не очень хочется использовать для столь малой необходимости - перетащить объект по странице
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отрабатывает событие onmouseout при внедрении нового слоя ilshat Элементы интерфейса 3 28.07.2008 05:27