Что такое injectedScriptId в протоколе Chrome Devtools?

В CDP, когда, например, при выполнении Debugger.evaluateOnCallFrame для оценки какого-либо объекта, ответ будет содержать objectId свойство, которое выглядит как {injectedScriptId: 1, id: 413}, И injectedScriptId никогда не меняется (по крайней мере, я никогда не видел, чтобы это изменилось). id prop кажется уникальным идентификатором объекта в памяти.

Смежный (даже более важный, но просто ищущий подтверждение) вопрос: id в objectId уникальный идентификатор объекта во всей программе / процессе? Могу ли я положиться на него, чтобы построить сериализованное представление переменных без циклических ссылок?

Так какова цель injectedScriptId и что InjectedScript?

1 ответ

Ответ от JoelEinbinder:

Это внутренняя деталь реализации, поэтому вам не следует полагаться на нее, и она может измениться в любое время без предупреждения или не работать согласованно.

Внедренный скрипт - это внутренняя вещь, которую мы внедряем в контекст выполнения JavaScript для управления удаленными объектами и другими вещами. Вот почему у них есть отдельные счетчики идентификаторов.

Так что нет, внутренний идентификатор не уникален. Используйте строку.

Другие вопросы по тегам