Почему я не могу расширить этот объект события в консоли Chrome?

Упрощенно, я запускаю это в консоли:

window.onbeforeunload = function (e) {
    console.log(e);
}

Но в консоли, когда происходит событие (пытаясь "покинуть страницу" в середине написания SO вопроса), я вижу следующее:

Event {clipboardData: undefined, cancelBubble: false, returnValue: true, srcElement: document, defaultPrevented: false…}

С небольшим изображением "я" рядом с ним. Когда я щелкаю стрелку рядом с ним, чтобы развернуть объект в консоли, ничего не происходит. Стрелка поворачивается, чтобы показать, что она расширилась, но не расширяется.

Что мне здесь не хватает??

Ответ 1

Это происходит потому, что, хотя вы позволяете консоли сохраняться после изменений страницы, Объект больше не существует - он был уничтожен, когда вы покинули страницу. Это означает, что его просто больше нельзя проверять, поэтому нажатие на треугольник вниз не помогает.

Попробуйте это вместо этого, чтобы предотвратить изменение страницы:

window.onbeforeunload = function (e) {
    console.log(e);
    return true;
}

Теперь на странице будет предложено спросить вас, что делать. Нажмите "Отмена" в появившейся подсказке, чтобы остаться на странице. Теперь вы можете осмотреть Event в консоли по желанию.

Разница в том, что функция onbeforeunload теперь возвращает значение, которое не равно null/undefined. Возвращаемым значением может быть что угодно, даже '' или false, и т.д.... что угодно, кроме null и undefined, и оно все равно будет вызывать запрос страницы перед переходом, что даст вам возможность проверить событие. Помните, что при отсутствии return заявления, функции JavaScript возвращают undefined по умолчанию.

Всякий раз, когда вы не можете проверить что-либо в Chrome Dev Tools, 90% времени это происходит из-за того, что какое-то действие привело к тому, что эта вещь стала недоступной... страница переместилась с того момента, когда этот объект существовал.

Ответ 2

Старый вопрос. Но это простое решение работало лучше для меня. Используйте

function(e) {
  console.dir(e);
}

Ответ 3

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

Запрос Api PUT, отображаемый как "отмененный" с сообщением об ошибке "Ошибка ввода: не удалось получить"