У событий есть read-only свойство
isTrusted, которое показывает, например, был ли это настоящий клик мышкой или просто триггернули это событие на элементе.
Popup окна открываются только, если к ним ведет цепочка вызовов, инициированная действием пользователя, кликом.
Как можно внутри любой функции, без обращения к свойству исходного события, узнать, правомочно ли сейчас открыть новое окно? Может, есть какие-то свойства/методы текущего контекста/окружения?
Наверное, можно пробовать создать новое окно и проверять результат. Но интересно, можно ли как-то ещё – есть ли где-то в контексте аналог свойства isTrusted?