Итак, я делаю некоторые изменения в плагине Wordpress. Мне нужно скопировать прослушиватель событий на элемент, а затем заменить элемент и добавить его обратно. Слушатель событий создается плагином.
Я думал, что getEventListeners () будет работать, но я читал, что он работает только в консоли. Если это так, я действительно поражен. Мы находимся в чертовом 2020 году, и я не нахожу очевидного решения этой проблемы.
Какое здесь решение?
Ниже приведен код, который я пытался реализовать, предполагая, что getEventListeners - это не просто консольная функция.
// Edit Affirm
(function replaceAffirm() {
if (document.querySelector(".affirm-modal-trigger")) {
const learnMore = document.querySelector("#learn-more");
const modalTrigger = document.querySelector(".affirm-modal-trigger");
const clickHandler = getEventListeners(modalTrigger).click[0].listener;
const substr = learnMore.innerHTML
.toString()
.substring(
learnMore.innerHTML.indexOf("h") + 2,
learnMore.innerHTML.length
);
learnMore.innerHTML = "Easy Financing with " + substr;
modalTrigger.addEventListener("click", clickHandler);
} else {
setTimeout(function () {
replaceAffirm();
}, 250);
}
})();
HTML
<p id="learn-more" class="affirm-as-low-as" data-amount="20000" data-affirm-color="white" data-learnmore-show="true" data-page-type="product">
Starting at
<span class="affirm-ala-price">$68</span>
/mo with
<span class="__affirm-logo __affirm-logo-white __ligature__affirm_full_logo__ __processed">Affirm</span>.
<a class="affirm-modal-trigger" aria-label="Prequalify Now (opens in modal)" href="javascript:void(0)">Prequalify now</a>
</p>