Поскольку скрипты содержимого работают в изолированном контексте, ваш скрипт .click
не знает о списке обработчиков, запускаемых element.click()
, поэтому он ничего не будет запускать. Добавление нового обработчика из вашего скрипта контента будет ссылаться на оригинальный скрипт страницы, и именно поэтому он вызывает ваше событие.
В любом случае, это способ преодолеть «изоляцию», другой подход, который IMHO более понятно, это запуск чистого DOM-события
Примерно так:
const clickEvent = new Event('click');
const hasFired = element.dispatchEvent(clickEvent);
if(hasFired){
// everything ok
} else {
// someone blocked your handler
}
Вы можете взглянуть на Ссылку на событие , так как иногда вам может понадобиться укажите параметры события, попробуйте это
const clickEvent = new Event('click', {cancelable: false, bubbles: true});
Я помню, у меня была та же проблема, что и у вас, и я решил ее с этим