Как я могу получить HTML-версию темы из плагина с помощью JavaScript? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть переменная с именем btn, которую я назначаю функции document.querySelector (). Я знаю, что выбор запроса правильный, потому что он захватывает нужный элемент, когда я запускаю его через консоль браузера. Тем не менее, присвоение дает нулевой результат. Это потому, что я не могу получить HTML таким образом с помощью Osclass Framework?

Я разрабатываю плагин. Этот плагин изменяет форму регистрации. Я добавляю текстовое поле, в котором я использовал прослушиватель событий для обнаружения ввода. Если есть ввод, я хочу, чтобы форма что-то делала, когда нажата кнопка отправки. Там нет проблем с обнаружением этого поля формы, я подозреваю, потому что я только что добавил его в папку плагинов. Однако я не могу взять HTML из темы. Я думаю, что отчасти это связано с тем, что я пытаюсь получить его до загрузки HTML. Несмотря на это, я попытался отложить сценарий и использовать встроенный сценарий для запуска кода после загрузки содержимого DOM. Нет успеха

Вот фрагмент HTML, который я хочу взять.

<div class="controls">
     <button type="submit" class="ui-button ui-button-middle ui-button-main"><?php _e("Create", 'bender'); ?></button>
</div>

Вот код, который я использую для этого, и код, который я хочу выполнить:

var btn = document.querySelector("div.controls button");
btn.addEventListener("submit", function() {
     console.log("Honey is sweet!");
});

Наконец, вот как я запускаю скрипт:

<script type="text/javascript" async="" defer="" src="<?php echo osc_base_url().'oc-content/plugins/honeypot/fieldcheck.js';?>"></script>

Я должен отметить, что я запускаю это как функцию с хуком osclass: osc_add_hook('user_register_form', 'twf_honeypot_form_field');

Я ожидаю, что переменная захватит кнопку, и к кнопке будет добавлен прослушиватель событий. Как только форма отправлена, она должна записать сообщение в консоли. Вместо этого происходит следующее: Uncaught TypeError: Невозможно прочитать свойство 'addEventListener' с нулевым значением.

Если вы использовали osclass, это потому, что HTML живет в другом месте? Я подумал, что если я отложу выполнение сценария, этот код не будет выполняться до тех пор, пока страница не загрузится, и я все равно смогу захватить HTML. Если нет, как я могу получить этот бит HTML из файла темы?

1 Ответ

0 голосов
/ 10 мая 2019

Оказывается, в этой строке была проблема: osc_add_hook('user_register_form', 'twf_honeypot_form_field'). Код не будет выполняться до того, как загрузится dom, даже если я сам укажу это сделать в самом скрипте, потому что скрипт все еще выполняется только здесь. Я поместил вызов скрипта в функцию и добавил новый хук: osc_add_hook('after_html', 'twf_deny'); Должен был догадаться, что для этого варианта использования был хук.

...