1

Расширение в Google Chrome для дополнительного отчета.

Тема: Расширение в Google Chrome для дополнительного отчета.

Доброго времени суток. У нас есть стороннее приложение, для обслуживания заявок на техническое обслуживание. Хочу при помощи расширения добавить кнопку на сайт, на которую смогут нажимать пользователи, для отправки оперативного отчета(В случаях, если по какой-то причине навигационное оборудование не выходит на связь или работает не корректно, чтобы персонал работающий в стороннем приложении сразу видел заявку на обслуживание).
Пока что код работает через таймер и кнопка появляется, но это не удобно, потому что если таймер закончит отсчет ранее чем пройдет авторизация на сайте, кнопка не добавится.
Код на данный момент выглядит так

setTimeout(function(){ 
var sp = document.createElement("div");
sp.innerHTML = "<button>TEST</button>";
sp.style.paddingRight = "1px";
sp.id = "testid"; //ID должен быть уникален!
document.querySelector(".name-column").appendChild(sp);
},20000);

Как можно изменить код, чтобы код срабатывал при загрузке элемента с классом "name-column", а не по таймеру?
И разрешено ли использование расширений в wialon hosting?

2

Расширение в Google Chrome для дополнительного отчета.

Re: Расширение в Google Chrome для дополнительного отчета.

Нашел решение, заменив в manifest ' "matches": ["https://hosting.wialon.com/"],' на ' "matches": ["https://hosting.wialon.com/*"],'

3

Расширение в Google Chrome для дополнительного отчета.

Re: Расширение в Google Chrome для дополнительного отчета.

quiethermit пишет:

И разрешено ли использование расширений в wialon hosting?

В общем случае — нет. Точнее запретить никто не может, но нет никаких гарантий, чтобы не будем менять идентификаторы/имена css-классов/менять разметку, прочее.

Например, в текущий момент .name-column по какому-то совпадению уникален в системе и имеется только на панели отчётов. Но ничто не мешает в будущем появиться другому элементу совершенно в другом месте с таким же классом, либо класс у отчётов может пропасть, либо начнёт перестраивать DOM при каких-то изменениях и при следующем обновлении потеряет ваш элемент.

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

Если же вы всё-таки хотите куда-то что-то добавить, то лучше специфицировать селектор (сделать что-нибудь вроде #report_templates_filter_target #report_templates_filter_params .name-column).

Возможностей выполнить свой код в определённый момент времени нет. Могу посоветовать только делать проверку в цикле, пока не найдётся такой элемент:

loop();

function loop() {
    setTimeout(() => {
        let target = document.querySelector('some selector');
        if (!target) {
            // Продолжаем ждать
            loop();
            return;
        }

        // `target` в наличии, можно что-то делать
    }, 5000);
}
4

Расширение в Google Chrome для дополнительного отчета.

Re: Расширение в Google Chrome для дополнительного отчета.

Спасибо! В данный момент расширение уже работает, код работает аналогично тому что вы предложили. А на счет изменения классов, есть способ закрыть этот вопрос за счет динамическое название класса, то есть эту переменную оставить в каком-нибудь файле на сервере нашего приложения и подгружать ее в querySelector. В случае если разметка меняется, то просто искать подходящий элемент для привязки и просто менять в файле название класса. Прошу прощение за запутанные формулировки. Про

возможность добавить на страницу скрипт по вашему урлу (делается для сайта через техподдержку)

Это платная услуга? И каким именно образом кнопка встраивается? Это может быть именно мой код? И можно ли его будет постоянно изменять?

5

Расширение в Google Chrome для дополнительного отчета.

Re: Расширение в Google Chrome для дополнительного отчета.

quiethermit пишет:

Это платная услуга? И каким именно образом кнопка встраивается? Это может быть именно мой код? И можно ли его будет постоянно изменять?

По поводу платности не скажу.

Конкретному сайту вашему может быть добавлены опции, одна из которых загружает указанный скрипт на странице логина и/или после логина.

Код будет именно вашим, ибо для этого нужно будет предоставить URL на скрипт, который вы где-то должны будете захостить. Поэтому и сможете постоянно его изменять, заменяя его на своём сервере.