Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337

Расширение для Яндекс браузера

06.01.2025, 08:35. Показов 9556. Ответов 107
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте не уверен, что в ту ветку пишу, посему уважаемы модераторы можете перезалить топик в нужную ветку
Предположим в буфере обмена находится текст:
«тема письма*I:\ТЗ.txt*8111@mail.ru, 8222@mail.ru»
То есть в буфере находятся тема письма, путь к файлу, который нужно приложить к письму и емейл адрес или адреса разделённые запятой, куда нужно отправить письмо или письма.
Задача: пользователь заходит в Яндекс браузер в свой почтовый ящик, нажимает кнопку «Написать» и всё то, что имеется в буфере обмена нужно, чтобы автоматически сделалось – заполнились поля: Кому, Тема и приложился указанный файл, чтобы осталось пользователю только нажать кнопку «Отправить», как это сделать?
То есть я захожу в свою почту, нажимаю кнопку «Написать» - это событие, ПО должно проверить есть ли в буфере обмена строка удовлетворяющая требованиям, в данном случае наличие двух знаков "*", если есть, тогда действовать согласно требуемого сценария
видимо нужно написать расширение для браузера, чтобы поддерживало Яндекс браузер или уже есть готовые? Попытался использовать Violentmonkey, установил, создал скрипт

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// ==User Script==
 
// @name         Auto Fill Yandex Mail
 
// @namespace    http://tampermonkey.net/
 
// @version      0.1
 
// @description  Автоматически заполняет поля в Яндекс Почте из буфера обмена
 
// @author       Ваше имя
 
// @match        https://mail.yandex.ru/*
 
// @grant        clipboardRead
 
// ==/User Script==
 
 
(function() {
 
    'use strict';
 
 
    // Добавляем слушатель события на кнопку "Написать"
 
    document.addEventListener('click', async function(event) {
 
        if (event.target.classList.contains('mail-ComposeButton')) {
 
            try {
 
                // Получаем текст из буфера обмена
 
                const text = await navigator.clipboard.readText();
 
 
 
                // Проверяем наличие двух знаков "*"
 
                if (text.split('*').length - 1 === 2) {
 
                    const parts = text.split('*');
 
                    const emailSubject = parts[0]; // Тема письма
 
                    const filePath = parts[1]; // Путь к файлу (не используется в этом примере)
 
                    const emailAddresses = parts[2]; // Емейлы
 
 
                    // Заполняем поля "Кому" и "Тема"
 
                    document.querySelector('input[name="to"]').value = emailAddresses;
 
                    document.querySelector('input[name="subject"]').value = emailSubject;
 
 
                    // Здесь можно добавить логику для прикрепления файла, если это необходимо
 
                    console.log("Поля заполнены!");
 
                } else {
 
                    console.log("Содержимое буфера обмена не удовлетворяет требованиям.");
 
                }
 
            } catch (err) {
 
                console.error("Ошибка при доступе к буферу обмена: ", err);
 
            }
 
        }
 
    });
 
})();
но получил сообщение от расширения "Неверный скрипт! Безымянный" и чтобы Не гадать, лучше спросить, спасибо
и почему он Безымянный, когда сказано: @name Auto Fill Yandex Mail
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2025, 08:35
Ответы с готовыми решениями:

Возможно ли на javascript создать расширение для браузера, которое бы авторизовывалось в vk?
Возможно ли на javascript создать расширение для браузера (chrome,firefox,opera), которое бы авторизовывалось в vk?

"Управляемое" расширение для браузера
Хочу написать "управляемое"(внешней программой) расширение. Под "управлением" понимаю некий "костыль", т.к. нормальная...

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

107
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
22.01.2025, 16:40  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от voraa Посмотреть сообщение
В консоли ошибок нет?
я и не смотрю туда, так как не особо в них рублю, имеется сообщение:
Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR
я ориентируюсь на ругань расширения, расширение не ругается!
Цитата Сообщение от voraa Посмотреть сообщение
Если раскомментарить строку 10, алерт появляется?
да!

Добавлено через 1 минуту
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
расширение не ругается!
пересмотрел, ругается на 16-ю строку
JavaScript
1
                setTimeOut ( () => {
0
 Аватар для voraa
1301 / 1304 / 192
Регистрация: 21.01.2024
Сообщений: 6,033
22.01.2025, 16:42
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
пересмотрел, ругается на
А что пишет то?
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
22.01.2025, 16:47  [ТС]
а он не пишет, вернее почти всегда одно и тоже = анонимные функции
видимо нужно
JavaScript
1
setTimeout(() => {
щас

Добавлено через 3 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
щас
проверил, работает alert Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1...
было штук 5-6 подряд, как уладить?
0
 Аватар для voraa
1301 / 1304 / 192
Регистрация: 21.01.2024
Сообщений: 6,033
22.01.2025, 16:53
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
alert(`Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1
было штук 5-6 подряд, как уладить?
Вынести отключение обсервера из settimeout
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// файл content.js
// Получаем манифест расширения
const manifest = chrome.runtime.getManifest();
// Устанавливает обработчик события load для объекта window
// Код внутри фигурных скобок { ... } будет выполнен
// После того, когда все элементы страницы (включая изображения, стили и другие ресурсы) будут полностью загружены 
window.onload = () => { // 1
    // Проверяем, загружено ли расширение
    if (manifest && manifest.name) { // 2
        // alert("Расширение «" + manifest.name + "» работает!");
        let attachButton;
        // Создаем наблюдатель для кнопки "Прикрепить файлы с компьютера"
        const attachButtonObserver = new MutationObserver((mutationsList) => {
        attachButton = document.querySelector("input[type='file']"); // Нужен правильный селектор
            if (attachButton) {
                attachButtonObserver.disconnect(); // Отключаем наблюдатель после нахождения кнопки
                setTimeOut ( () => {
                    alert(`Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1 Селектор кнопки: input[type='file']`);
                    // attachButton.addEventListener("change", function() {
                    // alert("Файлы выбраны!");
                    //});
                }, 0);
            }
        });
        attachButton = document.querySelector("input[type='file']"); // Нужен правильный селектор
        if (attachButton) {
            alert(`Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 2 Селектор кнопки: input[type='file']`);
        } else {
        // Подключаем обсервер. Следим за добавлением узлов во всем документе. !!!
        attachButtonObserver.observe(document, {subtree:true, childList:true});
        }
    } else { // 2, 3
        alert("Расширение «" + manifest.name + "» НЕ работает, далее программа выполняться НЕ будет!"); return;} // 3 Завершаем выполнение скрипта
}; // 1
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
22.01.2025, 20:57  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
setTimeOut
не есть гут
JavaScript
1
setTimeout ( () => {
оно и цветом коричневым становится как "алерт" в блокноте++
и 25-ю строку удалил, чтобы не было масло масляным....
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// файл content.js
// Получаем манифест расширения
const manifest = chrome.runtime.getManifest();
// Устанавливает обработчик события load для объекта window
// Код внутри фигурных скобок { ... } будет выполнен
// После того, когда все элементы страницы (включая изображения, стили и другие ресурсы) будут полностью загружены 
window.onload = () => { // 1
    // Проверяем, загружено ли расширение
    if (manifest && manifest.name) { // 2
        // alert("Расширение «" + manifest.name + "» работает!");
        let attachButton;
        // Создаём наблюдатель для кнопки "Прикрепить файлы с компьютера"
        const attachButtonObserver = new MutationObserver((mutationsList) => {
        attachButton = document.querySelector("input[type='file']"); // Нужен правильный селектор
            if (attachButton) {
                attachButtonObserver.disconnect(); // Отключаем наблюдатель после нахождения кнопки
                setTimeout ( () => {
                    alert(`Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1 Селектор кнопки: input[type='file']`);
                    // attachButton.addEventListener("change", function() {
                    // alert("Файлы выбраны!");
                    //});
                }, 0);
            }
        });
        if (attachButton) {
            alert(`Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 2 Селектор кнопки: input[type='file']`);
        } else {
        // Подключаем обсервер, следим за добавлением узлов во всём документе
        attachButtonObserver.observe(document, {subtree:true, childList:true});
        }
    } else { // 2, 3
        alert("Расширение «" + manifest.name + "» НЕ работает, далее программа выполняться НЕ будет!"); return;} // 3 Завершаем выполнение скрипта
}; // 1
хотел было написать НЕ работает, ан нет было один раз Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1
не первый раз...такие дела...
0
 Аватар для voraa
1301 / 1304 / 192
Регистрация: 21.01.2024
Сообщений: 6,033
22.01.2025, 21:01
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Сообщение от voraa
setTimeOut
не есть гут
Точно. Вот, что бывает, когда сам потестить не можешь.
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
22.01.2025, 21:03  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Точно. Вот, что бывает, когда сам потестить не можешь.
а завтра сможете?
потому как
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ан нет было один раз Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1
не первый раз...такие дела...
0
 Аватар для voraa
1301 / 1304 / 192
Регистрация: 21.01.2024
Сообщений: 6,033
23.01.2025, 07:31
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
а завтра сможете?
Тестить то я никак не смогу. Я же не ставлю себе это расширение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2025, 07:31

Расширение для Браузера
Дарова народ, я тут решил попробовать создать расширения для Браузера(Опера GX, если так важно). Но ни как не получается реализовать...

Расширение для браузера
у меня есть расширение просто файлом js идёт оно для гугла хрома и мазилы но его может стырить любой желающий тут я стал переделывать под...

Расширение для браузера(Цензура)
Дарова народ, я тут клепаю расширение для браузера(Цензура), однако мне нужно использовать нейросеть(к сожалению это обязательная часть)...

Расширение-автоклик для браузера
Привет! Я в программировании на JavaScript новичек. Мне нужно сделать расширение для браузера, которое на определённом сайте при нажатии к...

Расширение для браузера, возможности
Посдкажите, возможно ли в принципе реализовать следующий функционал на JS в рамках расширения для браузера (например, для Хрома). От...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
108
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru