событие должно возникать при определенных условиях
приветствую всех
=== пытаюсь подрихтовать один скрипт (скрипт не мой, стащил с другого форума), но т.к. в 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] этот скрипт, доработка (+микс с другим) того, что установлен на этом форуме скрипт работает естессно только когда заходишь, как пользователь, гостям недоступно === если кто не зареган там или лениво, то вот картинка, как это выглядит ![]() |
Это не поможет!? Или я что то не так понял!? :(
|
я читал подробное описание этого, но только на английском =)
здесь сейчас подробно изучу на великом и могучем, спасибо, что откликнулись =) |
ок, с этим разобрался другим путем, просто добавив в сам шаблон к 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Кб), все остальное - громоздкие фреймворки, которые не очень хочется использовать для столь малой необходимости - перетащить объект по странице |
Часовой пояс GMT +3, время: 09:18. |