Как запустить событие изменения текста HTML-элемента с помощью Javascript в расширении Chrome?

#javascript #html #google-chrome-extension

#javascript #HTML #google-chrome-extension

Вопрос:

Я создаю расширение Chrome и сталкиваюсь с проблемой, что даже если я изменил текст элемента, кнопка отправки не включается, как обычно, и другие вещи не обрабатываются как ввод вручную.

Я пытаюсь запустить событие изменения текста, чтобы обработать нормальное поведение элементов при вводе вручную, используя следующий скрипт;

 var el2=document.getElementById("tmsg");
el2.innerText="hello world";
try{                                     
    el2.fireEvent("onchange");
}catch(error)
{
   alert("err:" error);
}
 

Тем не менее, текст задан, но появляется следующая ошибка

 TypeError: el2.fireEvent is not a function
 

Я ищу решение с помощью Java script, без решений jQuery, но ни одно из них не сработало для меня.

Может кто-нибудь, пожалуйста, указать мне, что я здесь делаю не так, или лучший способ сделать это?

Ответ №1:

Вы получаете эту ошибку, потому eventTarget.fireEvent() что это проприетарный метод, используемый в Internet Explorer.

Современный и стандартный способ ручной отправки событий, согласно MDN, заключается в следующем:

 // CREATE EVENT
const event = new Event('change', {bubbles: true});

// GET TARGET ELEMENT
const el2 = document.getElementById('tmsg');

// DISPATCH EVENT
el2.dispatchEvent(event);
 

Надеюсь, это сработает.

Комментарии:

1. Спасибо. использование dispatchEvent устранило ошибку. Но все же я не мог заставить это работать. Я все еще пытаюсь разобраться в проблеме.