Расширение Gmail / API гаджетов - как добавить кнопку на панель инструментов создания? - PullRequest
18 голосов
/ 31 декабря 2011

Я пытаюсь понять, как добавить кнопку в окно создания Gmail.

В «Лаборатории Gmail» есть некоторые расширения, которые добавляют определенные кнопки, например, кнопку «Отправить и архив» и кнопку «Вставка изображений», поэтому я предполагаю, что это возможно.

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

Вы знаете, как это можно сделать?

Если невозможно использовать Gmail API, есть ли другой способ добиться этого? Может быть, путем создания расширения Google Chrome или пользовательских скриптов?

Буду признателен за любую информацию, которая может направить меня в правильном направлении.

Спасибо.

1 Ответ

23 голосов
/ 02 января 2012

Лаборатории Gmail имеют специальные разрешения, потому что они написаны сотрудниками Google, к сожалению, мы, смертные, не обладаем такой властью. Конечно, есть способ обойти это, и вы правильно указали, что он должен сделать расширение Chrome или пользовательский сценарий. Если вы решите использовать расширение Chrome , оно все равно будет просто оболочкой для пользовательского скрипта

Вам придется создавать и вводить кнопку программно. Для этого потребуется немного изучить исходный код Gmail (спойлер: это ужасно).

Без более подробной информации о том, что вы хотите сделать, я не смогу предоставить гораздо больше помощи, но я могу помочь вам с одной проблемой сразу. Вы должны заставить свой сценарий ждать, пока не завершится процесс загрузки Gmail, что является сложной задачей. Это решение, которое я сейчас использую в минималистском стиле:

function bootstrap() {
    target = document.querySelectorAll('.vt:not(.SFzvCe)');
    if (document.querySelectorAll('html.xiu1Fc, html.aao')[0] == null) {
        return;
    }
    if (target.length > 0) {
        // loaded, do stuff
    } else {
        window.setTimeout(bootstrap, 200);
    }
}
window.addEventListener('DOMSubtreeModified', bootstrap);

Эта версия ожидает полной загрузки чата. Дайте мне знать, если у вас есть другие вопросы: @ anstosa

...