powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / MutationObserve имя узла
7 сообщений из 7, страница 1 из 1
MutationObserve имя узла
    #40089634
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый, в документе имеется ячейка 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>
...
Рейтинг: 0 / 0
MutationObserve имя узла
    #40089656
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
});


}

})

});

...
Рейтинг: 0 / 0
MutationObserve имя узла
    #40089670
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill96,

ну для начала нада понять различие между java и javasript

Модератор: Тема перенесена из форума "Java".
...
Рейтинг: 0 / 0
MutationObserve имя узла
    #40089770
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
});

...
Рейтинг: 0 / 0
MutationObserve имя узла
    #40089771
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill96,

ты б научился ещё и оформлять его правильно...
...
Рейтинг: 0 / 0
MutationObserve имя узла
    #40089776
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, сам код\код+листинг в посте?
...
Рейтинг: 0 / 0
MutationObserve имя узла
    #40089790
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill96,

на форуме есть тэги для оформления кода
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / MutationObserve имя узла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]