Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 7
1

Выполнение действия на странице после срабатывания действия в другом скрипте

24.02.2019, 12:38. Просмотров 773. Ответов 12
Метки нет (Все метки)


В теле страницы есть скрипт такого вида:
Javascript
1
<script>(function(d,a,b){let s=d.createElement('script');s.async=true;s.src='https://site.pro/code/pops.js?h=&si2='+b;d.head.appendChild(s);});</script>
Скрипт подтягивает на страницу окошко с кнопками (показываю часть кода):
HTML5
1
2
3
<div id="Popup__f">
<button type="button" id="Popup__btnAllow">Yes</button>
<button type="button" id="Popup__btnCancel">No</button></div></div>
Можно ли вызвать редирект своей страницы при нажатии кнопки юзером "Yes" в этом поп окне?
Пробовал вставить в хидер такую конструкция но не работает:

Javascript
1
2
3
4
5
<script type="text/javascript">
    document.getElementById("Popup__btnAllow").onclick = function () {
        location.href = "www.yoursite.com";
    };
</script>
С Java языком незнаком, использую что нашел в интернете и интуицию
Спасибо за понимание
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2019, 12:38
Ответы с готовыми решениями:

Функция с таймером выбора действия или выполнение действия по умолчанию
Нужна функция которая выполнит действие по умолчанию, если пользователь не ввел в интерактивное...

Выполнение действия после завершения анимации
Всем доброго времени суток. Как сделать так, чтобы при завершение работы анимации, например этой: ...

Выполнение действия после определенной операции
всем привет. У меня вот такая проблема. Взял движек одной игры и решил ее полностью переработать....

Выполнение действия после нажатия на клавишу
Как сделать что бы выполнялось действие после нажатия на клавишу Enter?

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы Fullstack-разработчиков на JavaScript‌
12
dev - investigator
Эксперт JSЭксперт HTML/CSS
2127 / 1473 / 648
Регистрация: 16.04.2016
Сообщений: 3,688
24.02.2019, 14:43 2
Чтобы обратиться к узлу дерева, нужно как минимум быть уверенным в его существовании. Возможно Вы обращаетесь к
Javascript
1
document.getElementById("Popup__btnAllow")
когда на странице его еще нет. Примитивно можно использовать таймер и в калбеке отслеживать существование узла, при true очистить таймер. Но лучше использовать интерфейс MutationObserver - https://developer.mozilla.org/... onObserver.
Могу написать Вам конкретный пример, но мне понадобиться код страницы или хотя бы точный идентификатор элемента-родителя, в который генерится поддерево(окошко с кнопками) скриптом
Цитата Сообщение от oleksandr1 Посмотреть сообщение
https://site.pro/code/pops.js?h=&si2='+b
1
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 7
24.02.2019, 15:31  [ТС] 3
Могу показать все коды, выкладывать здесь или можно вличку? Одно уточнение: страница находится на облачном хостинге DigitalOcean и вроде как ПХП не поддерживет этот хостинг (сам не проверял)
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2127 / 1473 / 648
Регистрация: 16.04.2016
Сообщений: 3,688
24.02.2019, 15:37 4
oleksandr1, ну все не надо ) Нужен
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
код страницы или хотя бы точный идентификатор элемента-родителя, в который генерится поддерево(окошко с кнопками) скриптом
Скрипт
HTML5
1
<script>(function(d,a,b){let s=d.createElement('script');s.async=true;s.src='https://site.pro/code/pops.js?h=&si2='+b;d.head.appendChild(s);});</script>
подгружает другой, который в свою очередь создает popup окно. Нужно знать куда он добавляет его. В конец\начало body, или на странице уже есть контейнер для него?
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 7
24.02.2019, 16:03  [ТС] 5
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<div id="Popup" class="Popup--whiteTheme Popup--show">
<div id="Popup__cnt">
<div id="Popup__wIc">
<img alt="icon" id="Popup__ic" src="https://site.pro/popup-image.png"></div>
<div id="Popup__tx">WARNING!</div></div>
 
<div id="Popup__f">
<button type="button" id="Popup__btnAllow">Yes</button>
 
<button type="button" id="Popup__btnCancel">No</button></div></div>
 
</body></html>

Все на дивах, а нужен другой идентификатор? Это код окошка
Подгружает в боды, и сам скрипт установлен в боды

Не могу найти как спрятать в спойлер код в быстром ответе...
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2127 / 1473 / 648
Регистрация: 16.04.2016
Сообщений: 3,688
24.02.2019, 16:41 6
oleksandr1, плохо что в body
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
const mutationListener = (mutations) => {
  mutations.forEach(e=> {
    if (e.type === 'childList') {
      document.getElementById("Popup__btnAllow").addEventListener('click', () => location.href = "www.yoursite.com");
    };
  })
}
new MutationObserver(mutationListener).observe(document.body, {
  childList: true,
  characterData: true,
  subtree: true
});
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 7
24.02.2019, 17:19  [ТС] 7
В
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
плохо что в body
Я его могу разместить куда угодно, скрипт вставляю на свою страницу.
На партнерской программе указано вставлять в боды, но думаю что это без разницы, в боды или хедер или нет?

Добавлено через 11 минут
Не срабатывает скрипт, где может быть решение??
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2127 / 1473 / 648
Регистрация: 16.04.2016
Сообщений: 3,688
24.02.2019, 17:19 8
oleksandr1, Вы не поняли меня)) Скрипт, что подгружается с партнёрки и котоорый вставляете в боди, именно он генерит то самое окно - повлиять на это Вы не можете.
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 7
24.02.2019, 17:42  [ТС] 9
Теперь понял, повлиять не могу, но после нажатия кнопки поп окно исчезает, может это как то можно использовать?

Добавлено через 6 минут
Тот скрипт, который Вы опубликовали, я вставил в хедер, но редиректа моей страницы не происходит.

Добавлено через 10 минут
Может скинуть Вам в личку урл страницы? Вы на месте сразу поймете возможно ли решение, а так как гадание на кофейной гуще, а правильный ответ здесь опубликуете.

Добавлено через 3 минуты
Гм, при нажатии кнопки код страницы не меняется, все действия происходят по видимому удаленно.
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2127 / 1473 / 648
Регистрация: 16.04.2016
Сообщений: 3,688
24.02.2019, 18:26 10
oleksandr1,
Цитата Сообщение от oleksandr1 Посмотреть сообщение
я вставил в хедер
нужно было перед закрывающим тегом </body>
Цитата Сообщение от oleksandr1 Посмотреть сообщение
а так как гадание на кофейной гуще
чтобы такого не происходило, нужно выкладывать в тему либо код демонстрирующий проблему, либо архив с проектом.
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 7
24.02.2019, 19:27  [ТС] 11
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
нужно было перед закрывающим тегом </body>
Попробовал внизу вставить, перед </body>, несрабаьывает.
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2127 / 1473 / 648
Регистрация: 16.04.2016
Сообщений: 3,688
25.02.2019, 04:34 12
oleksandr1, вот пример, вместо создания popup, я там генерю кнопки на страницу, но это не важно(делал просто для другой темы). Так как MutationObserver настроен на отслеживание изменения дерева цели, то при добавляется хоть одного элемента в структуру цели, в консоль приходит сообщение об этом. А ведь вместо сообщения можно сделать что-угодно - https://codepen.io/qwerty_wasd/pen/JaamjX
Посмотрите как работает. Плюс я Вам дал ссылку выше на документацию. Попробуйте адаптировать сами.
0
j2FunOnly
25.02.2019, 09:54     Выполнение действия на странице после срабатывания действия в другом скрипте
  #13

Не по теме:

Цитата Сообщение от oleksandr1 Посмотреть сообщение
Могу показать все коды, выкладывать здесь или можно вличку?
Цитата Сообщение от oleksandr1 Посмотреть сообщение
Может скинуть Вам в личку урл страницы?
Правила форума
4. Порядок создания тем.
4.6 Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
4.11 Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах. По этой же причине коды программ также должны находиться на форуме.

0
25.02.2019, 09:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2019, 09:54
Привет! Вот еще темы с ответами:

Выполнение действия сразу после запуска активити
Ситуация такова. Есть Активити в активити лежит TabLayout +ViewPager в который подгружаются 2...

Выполнение некоторого действия после закрытия формы
Здравствуйте, есть проблемка. Существует первая форма MainForm, из которой я модально вызываю...

Сканирование папки , выполнение действия после нахождения файла
Здравствуйте. Есть программа , которая сканирует заданную директорию на содержимое. То есть ,...

Как ускорить выполнение кода? (Получение цвета пикселя, сравнение и выполнение действия)
Всем привет. Нужна консультация экспертов) Программа такая. Есть пиксель на экране, в нем то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.