Chrome версии 84 вызывает ошибку в JavaScript коде (Uncaught TypeError: функция не найдена)

Проблема с обновлением Chrome до версии 84

После обновления браузера Chrome до версии 84 у нас перестала работать страница. Есть элемент с событием onclick, который больше не выполняется. Браузер показывает ошибку: Uncaught TypeError: dashboard.switchObserver is not a function

Вот код HTML с вызовом JavaScript функции:

<ul class="menu-list menu-list-right compact-menu">
    <li>
        <a class="relative" data-observer-type="creator" data-alert="creator" data-active="true" onclick="dashboard.switchObserver('creator')">
            <span class="menu-icon">
                <i class="icon icon-checked"></i> 
            </span>
            <span class="filter-text">Creator</span>
        </a>
    </li>
    <li>
        <a class="relative" data-observer-type="reviewer" data-alert="reviewer" data-active="false" onclick="dashboard.switchObserver('reviewer')">
            <span class="menu-icon">
                <i class="icon icon-unchecked"></i> 
            </span>
            <span class="filter-text">Reviewer</span>
        </a>
    </li>
    <li>
        <a class="relative" data-observer-type="observer" data-alert="observer" data-active="true" onclick="dashboard.switchObserver('observer')">
            <span class="menu-icon">
                <i class="icon icon-checked"></i> 
            </span>
            <span class="filter-text">Observers</span>
        </a>
    </li>
</ul>

Возможно ли что dashboard стало зарезервированным словом в JavaScript? Кто-нибудь сталкивался с подобной проблемой?

У меня была такая же проблема с Chrome 84! Chrome теперь строже относится к глобальным переменным. Попробуй обернуть код в window.dashboard или объяви dashboard через var в глобальной области. Еще лучше - замени onclick на addEventListener. Это надежнее работает в новых браузерах.

Да, Chrome 84 поменял обработку скоупов. Проверь, что dashboard объявлен как window.dashboard = {}, а не просто var dashboard. Если у тебя модули или strict mode, глобальные переменные могут не попасть в window. Попробуй в onclick написать window.dashboard.switchObserver вместо dashboard.switchObserver - если заработает, то это оно.

Скорее всего, проблема в том, что объект dashboard не успевает инициализироваться до клика. Попробуй в консоли выполнить console.log(dashboard), чтобы понять, что происходит. Может, скрипт загружается после HTML, или там ошибка в самом файле.