InboxSDK `registerComposeViewHandler` не срабатывает для **встроенных** ответов (работает только тогда, когда ответ появJavascript

Форум по Javascript
Ответить
Anonymous
 InboxSDK `registerComposeViewHandler` не срабатывает для **встроенных** ответов (работает только тогда, когда ответ появ

Сообщение Anonymous »

Я создаю расширение Chrome для Gmail, используя InboxSDK v2. Мой RegisterComposeViewHandler отлично работает, когда я нажимаю Всплывающий ответ (плавающее окно создания сообщения), но он никогда не срабатывает для встроенного ответа внутри потока.
Согласно документации, sdk.Compose.registerComposeViewHandler должен вызываться всякий раз, когда создается представление составления, включая встроенные ответы:
https://inboxsdk.github.io/inboxsdk-docs/compose/
Минимальное воспроизведение (скрипт содержимого)

Код: Выделить всё

// content.js
(function() {
InboxSDK.load(2, 'sdk_xxx').then((sdk) => {
console.log('SDK ready');

// Register once, immediately
sdk.Compose.registerComposeViewHandler((composeView) => {
console.log('ComposeView detected') // Never logged if inline reply
});
});
})();
Отрывок из манифеста

Код: Выделить всё

{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0.0",
"permissions": [],
"host_permissions": ["https://mail.google.com/*"],
"content_scripts": [
{
"matches": ["https://mail.google.com/*"],
"js": ["content.js"],
"run_at": "document_end"   // also tried "document_start"
}
],
"web_accessible_resources": [{
"resources": ["*"],
"matches": ["https://mail.google.com/*"]
}]
}
Чего я ожидаю
  • Обработчик должен срабатывать для каждого создания, включая встроенные ответы, открытые непосредственно в цепочке.
Что происходит на самом деле
  • Встроенный ответ: обработчик не срабатывает (нет журнала консоли).
  • Всплывающий ответ: обработчик срабатывает (появляется журнал консоли).
Что я пробовал
  • Регистрация обработчика составления как можно раньше, сразу после разрешения InboxSDK.load (без дополнительной асинхронной синхронизации).
    />
  • Переключение run_at между «document_start» и «document_end».
  • Гарантия регистрации обработчика ровно один раз (без дублирующих регистраций).
  • Использование Conversations.registerThreadViewHandler для перечисления существующих представлений создания:

    Код: Выделить всё

    sdk.Conversations.registerThreadViewHandler((threadView) => {
    try { threadView.getComposeViews().forEach(cv => console.log('Existing CV', cv)); } catch {}
    threadView.on('reply',   ({composeView}) => console.log('Reply CV', composeView));
    threadView.on('forward', ({composeView}) => console.log('Fwd CV', composeView));
    });
    
    Даже в этом случае встроенный ответ не запускает мой первоначальный обработчик создания сообщения.
  • Проверка того, что никакие флаги функций, настройки или проверки лицензирования не блокируют регистрацию (регистрация обработчика происходит безоговорочно).
  • Тестирование с новым профилем и без других расширений Gmail.
Известна ли странная особенность, при которой встроенные ответы не выдают RegisterComposeViewHandler при определенных условиях? Нужен ли мне другой перехватчик событий для встроенных ответов или ждать определенного состояния Gmail, прежде чем их можно будет обнаружить?
Будем признательны за любые указатели или работающий воспроизводящий встроенный ответ.

Подробнее здесь: https://stackoverflow.com/questions/798 ... es-works-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»