JS Userscipt - не работает window.onblur = null

Если я ставлю window.onblur = null из консоли, то все работает отлично, и событие не срабатывает. Но если запускаю тоже самое из надстройки, то функция которая была применена к window.onblur остается жить. Почему?


Ответы (1 шт):

Автор решения: Jacob

Покапав по глубже, понял, что судя по всему, нельзя редактировать переменные из контекста основного кода в контексе надстройки. Т.е. если на странице где то подключен скрипт с функцией test(), то внутри надстройки эта функция видна не будет, и соответственно удалить ее нельзя. Тоже самое касается и навешанных с помощью addEventListener событий. Из надстройки мы можем видеть только те события которые созданы внутри HTML, например для какой-нибудь кнопки <button onclick="...">Test</button>.

Но есть способ как это обойти. Нужно добавить скрипт с помощью createElement. Например, в данном случае:

let windowBlur = document.createElement('script')
windowBlur.innerHTML = 'window.onblur = null'
document.head.appendChild(windowBlur)
→ Ссылка