'наблюдаем' в 'MutationObserver': параметр 1 не относится к типу 'Node'

Я создаю расширение для Chrome и пытаюсь добавить небольшой текст рядом с кнопкой «ОТПРАВИТЬ» в окне создания письма gMail.

Я использую MutationObserver, чтобы знать, когда появляется окно создания блока. Я делаю это, наблюдая за элементом с классомno поскольку элемент compose box создается как дочерний элемент этого элемента (классno).

Когда пользователь нажимает кнопку «Создать» и появляется окно «Создать», я помещаю элемент рядом с кнопкой «Отправить», используя.after() метод. Имя класса кнопки ОТПРАВИТЬ.gU.Up.

Это настоящие имена классов gMail и довольно странные.

Ниже приведен код, который я использую:

var composeObserver = new MutationObserver(function(mutations){ 
    mutations.forEach(function(mutation){
        mutation.addedNodes.forEach(function(node){
            $(".gU.Up").after("<td> <div> Hi </div> </td>");
        });
    });
});

var composeBox = document.querySelectorAll(".no")[2];
var config = {childList: true};
composeObserver.observe(composeBox,config);

Проблема в том, что я постоянно получаю следующую ошибку:

Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'

Кто-нибудь может помочь? Я перепробовал несколько вещей, а также посмотрел другие ответы здесь, но все еще не могу избавиться от этой ошибки.

Вот мойmanifest.json файл:

{
    "manifest_version": 2,
    "name": "Gmail Extension",
    "version": "1.0",

    "browser_action": {
        "default_icon": "icon19.png",   
        "default_title": "Sales Analytics Sellulose"    
    },

    "background": {
        "scripts": ["eventPage.js"],
        "persistent": false
    },

    "content_scripts": [
    {
        "matches": ["https://mail.google.com/*"],
        "js": ["jquery-3.1.1.js", "insQ.min.js", "gmail_cs.js"]
    }
],

    "web_accessible_resources":[
        "compose_icon.png",
        "sellulosebar_icon.png" 
    ]
}

Постскриптум Я уже пробовал вставку библиотеки запросов, но у нее есть несколько недостатков. Это не позволяет мне быть конкретным относительно изменений в конкретном элементе. Мне еще предстоит попробовать библиотеку mutationsummary, но, поскольку она использует MutationObserver, я решил, что проблема не исчезнет.

Добавлено из комментария:
Это правда, что селектор не дает мне узел. Я проверил в консоли, он дает объект. Я также проверил в консоли, и он выбирает соответствующий элемент, который я хочу наблюдать.

Тем не менее, когда я добавляюconsole.log для выбранного элемента он отображается как неопределенный. Это означает, что вы, вероятно, правы в отношении выполнения кода до появления узлов. Можете ли вы сказать мне, как сделать так, чтобы задержка произошла? будет работать setTimeout? Как это работает в случае MutationObserver?

Ответы на вопрос(4)

Ваш ответ на вопрос