|
MutationObserve имя узла
|
|||
---|---|---|---|
#18+
День добрый, в документе имеется ячейка acf_pg1 я хочу подписаться на изменение не всего acf_pg1, а одного из acf_* у которого например есть поле #subject или custom_frame_titel = EMAIL. Какими способами можно это сделать? <tr id="acf_pg1" class="panel-group"><td colspan="5" style="height: auto"><div class="panel-group_wrapper pg_type_standart pg_pos_bottom" style="height: auto"><table style="width:100%;height:100%;" class="fields-holder" id="acf_fh6" cellspacing="1"><tbody><tr id="acf_p9" class="panel"><td colspan="2" style="height: auto;"><input class="button" data-action-type="callback" id="callback" name="callback" type="submit" value="Перезвонить"> </td></tr><tr id="acf_cf1" class="custom-frame"><td colspan="2"> <table class="custom_frame" cellspacing="0" style="width:100%;height:100%;"> <tbody><tr> <td id="acf_cf1group001f_sw" class="custom_frame_header"> <div class="custom_frame_icon" id="acf_cf1group001f_indph"> <div id="pl1acf_cf1group001f" style="display: none;"><img src="/fx/static/images/ld_red_dark.gif" style="vertical-align: middle" border="0" alt="Загрузка..."></div> <span style="width: 16px; height: 16px; background-color: transparent; background-image: url("/fx/static/images/icons.png"); background-repeat: no-repeat; background-position: 0px -16px; background-attachment: scroll; display: inline-block;"></span></div> <div class="custom_frame_title">База знаний</div> <input id="acf_cf1group001f_state" name="acf_cf1group001f_state" type="hidden" value="true"> </td> </tr> <tr> <td id="acf_cf1group001fc" class="custom_frame_content" style=""> <div id="acf_cf1group001f"> <table class="cfc" cellspacing="1" cellpadding="0"><tbody><tr id="acf_to1" class="tagged-object"><td height="36" colspan="2"> <div id="to1_branch_city_list2" style="width: 100%; text-align: left;"><!--@id=to1_branch_city_list2;obj=jsObj_to1_branch_city_list2;action=update;code=6;size=0;--><table id="_ajaxcs_req_scripts_" style="display: none;"><tbody><tr><td></td></tr></tbody></table><!--ajaxcs_req_scripts_end--><span>База знаний: ничего не найдено</span></div> </td></tr></tbody></table> </div> </td> </tr> </tbody></table> </td></tr><tr id="acf_cf2" class="custom-frame"><td colspan="2"> <table class="custom_frame" cellspacing="0" style="width:100%;height:100%;"> <tbody><tr> <td id="acf_cf2group001f_sw" class="custom_frame_header"> <div class="custom_frame_icon" id="acf_cf2group001f_indph"> <div id="pl1acf_cf2group001f" style="display: none;"><img src="/fx/static/images/ld_red_dark.gif" style="vertical-align: middle" border="0" alt="Загрузка..."></div> <span style="width: 16px; height: 16px; background-color: transparent; background-image: url("/fx/static/images/icons.png"); background-repeat: no-repeat; background-position: 0px 0px; background-attachment: scroll; display: inline-block;"></span></div> <div class="custom_frame_title">SMS</div> <input id="acf_cf2group001f_state" name="acf_cf2group001f_state" type="hidden" value="false"> </td> </tr> <tr> <td id="acf_cf2group001fc" class="custom_frame_content" style="display: none;"> <div id="acf_cf2group001f" style="display: none;" class="custom_frame_content"><!-- javascript generated block will be here :)~~ --> </div> </td> </tr> </tbody></table> ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2021, 10:34 |
|
MutationObserve имя узла
|
|||
---|---|---|---|
#18+
Kirill96, Суть этой доработки, когда прогружается веб форма у нее некоторые элементы загружаются динамически при разворачивании, в том числе и область для отправки писем, необходимо чтобы поле "скрытая копия", копировалась с поля "от кого". Поэтому для начала я отслеживаю не развернулась ли область и если развернулась, то копирую поле. Но если выбрать другую тему то поле скрытая копия обнуляется(очищается), для этого мне надо отслеживать изменения в области отправки писем. Пробовал DOMTreemodified, но эта технология старая\синхронная и под нагрузкой тормозит Вообще у меня такое рабочее решение, но я js\jquery изучаю неделю, поэтому хотелось бы уидеть мнение экспертов $( document ).ready(function(){ // отслеживание прогрузки документа $('#acf_pg1 .custom_frame_content').on('DOMNodeInserted', function(){ // отслеживание разворачивания блока if ($('#callback-email').val()){ $('#acf_pg1 .custom_frame_content').off('DOMNodeInserted'); // отключение отслеживания разворачивания блока //$("#mail-template :last").attr("selected", "selected"); //выбираем первый элемент списка $('#abonent-hidecopy-email').val($('#callback-email').val()); // как только дом добавился копируем поле "от кого" в поле "скрытая копия" var child = document.querySelector('#subject'); for (let i = 0; i < acf_pg1.querySelectorAll('.custom-frame').length; i++) { //проходимся по всем элементам acf_* из acf_pg1 var parent = acf_pg1.querySelectorAll('.custom-frame')[i]; var result = parent.contains(child); // находим в каком acf_* есть тема, а значит он для отправки писем if(result){ console.log(parent); var target = parent; // присваивает переменной target имя узла для отправки писем } } var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { console.log("mutation change in ", mutation.type, " name: ",mutation.target); $('#abonent-hidecopy-email').val($('#callback-email').val()); }); }); // Начать прослушивание изменений в корневом HTML-элементе страницы. mutationObserver.observe(target, { childList: true, subtree: true }); } }) }); ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2021, 11:38 |
|
MutationObserve имя узла
|
|||
---|---|---|---|
#18+
Kirill96, ну для начала нада понять различие между java и javasript Модератор: Тема перенесена из форума "Java". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2021, 12:03 |
|
MutationObserve имя узла
|
|||
---|---|---|---|
#18+
Kirill96, Сделал рефакторинг кода console.log('email script start') for (let i = 0; i < acf_pg1.querySelectorAll('.custom-frame').length; i++) { //проходимся по всем элементам acf_* из acf_pg1 var parent = acf_pg1.querySelectorAll('.custom-frame')[i] var result = Array.from(parent.querySelectorAll('div')) .find(el => el.textContent === 'EMAIL'); if(result){ var target = document.getElementById(parent.id); } } var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { console.log("mutation change in ",target, mutation.type, " name: ",mutation.target); $('#abonent-hidecopy-email').val($('#callback-email').val()); }); }); // Начать прослушивание изменений в корневом HTML-элементе страницы. mutationObserver.observe(target, { childList: true, subtree: true }); ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 07:08 |
|
MutationObserve имя узла
|
|||
---|---|---|---|
#18+
Kirill96, ты б научился ещё и оформлять его правильно... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 07:12 |
|
MutationObserve имя узла
|
|||
---|---|---|---|
#18+
вадя, сам код\код+листинг в посте? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 07:59 |
|
|
start [/forum/topic.php?fid=22&fpage=3&tid=1443204]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 256ms |
total: | 381ms |
0 / 0 |