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

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

06.01.2025, 08:35. Показов 8555. Ответов 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,335
22.01.2025, 16:40  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
В консоли ошибок нет?
я и не смотрю туда, так как не особо в них рублю, имеется сообщение:
Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR
я ориентируюсь на ругань расширения, расширение не ругается!
Цитата Сообщение от voraa Посмотреть сообщение
Если раскомментарить строку 10, алерт появляется?
да!

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

Добавлено через 3 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
щас
проверил, работает alert Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1...
было штук 5-6 подряд, как уладить?
0
 Аватар для voraa
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
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,335
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
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
22.01.2025, 21:01
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Сообщение от voraa
setTimeOut
не есть гут
Точно. Вот, что бывает, когда сам потестить не можешь.
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,335
22.01.2025, 21:03  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Точно. Вот, что бывает, когда сам потестить не можешь.
а завтра сможете?
потому как
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ан нет было один раз Кнопка «Прикрепить файлы с компьютера» найдена!, попытка № 1
не первый раз...такие дела...
0
 Аватар для voraa
1296 / 1281 / 190
Регистрация: 21.01.2024
Сообщений: 5,930
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
Ответ Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru