С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295

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

06.01.2025, 08:35. Показов 7118. Ответов 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
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 20:49  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от diadiavova Посмотреть сообщение
Появилась форма и в нее вставились данные из кода. Что еще нужно?
ок, а можно скрин? в яндекс браузере делали? я там
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 21:01
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ок, а можно скрин? в яндекс браузере делали? я там
Да в яндексбраузере. Запись экрана приложил (записал как смог)
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 21:30  [ТС]
diadiavova, спасибо за ваши ответы, за помощь
у меня сейчас реализовано так, текст файла content.js=код с вашего сообщения № 40
манифест:
Code
1
2
3
4
5
6
7
8
9
10
{
  "manifest_version": 3,
  "name": "EDDS ZGO",
  "version": "1.0",
  "description": "ЕДДС ЗГО",
  "icons": {"16": "icon16.png", "48": "icon48.png", "128": "icon128.png"},
  "action": {"default_popup": "popup.html", "default_icon": "icon48.png"},
  "permissions": ["activeTab"],
  "content_scripts": [{"matches": ["https://mail.yandex.ru/*"], "js": ["content.js"]}]
}
не работает, ЧЯДНТ? спасибо
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 21:35
Попробуй ровно то, что я вводил в консоль
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
const writeButton = document.querySelector("a[href='#compose']"); // Заменён селектор на правильный
    const text = "тема письма*I:З.txt*8111@mail.ru, 8222@mail.ru";
    if (writeButton)
    {
      writeButton.addEventListener('click', () =>
      {
        setTimeout(function ()
        {
          if (text.split('*').length - 1 === 2)
          {
            const parts = text.split('*');
            const emailSubject = parts[0]; // Тема письма
            const filePath = parts[1]; // Путь к файлу (не используется в этом примере)
            const emailAddresses = parts[2]; // Емейлы
            document.querySelector('#compose-field-1').textContent = emailAddresses;
            document.querySelector('input[name="subject"]').value = emailSubject;
            console.log("Поля заполнены!");
          }
          else
          {
            console.log("Содержимое буфера обмена не удовлетворяет требованиям.");
          }
        }, 1000);
      });
    }
    else
    {
      alert('Кнопка "Написать" не найдена!');
 
    }
Добавлено через 1 минуту
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
сообщения № 40
Скорей всего не нужно впихивать все это в обработчик DOMContentLoaded. По умолчанию контент-скрипты ЕМНИП выполняются уже после загрузки страницы и, соответственно, после этого события.
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 21:37  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Попробуй ровно то, что я вводил в консоль
попробовал код из сообщения 44, увы НЕ работает
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 21:40
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
попробовал код из сообщения 44, увы НЕ работает
Этот код добавляет обработчик события к кнопке. То есть после его выполнения надо кнопку "Написать" нажать.
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 21:49  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Этот код добавляет обработчик события к кнопке. То есть после его выполнения надо кнопку "Написать" нажать.
сорри я в вебе не очень)), то что нужно нажать кнопку - я конечно жму, форму получаю, а можно в коде добавить реализацию того, чтобы я знал кода её нажать?

Добавлено через 4 минуты
кстати у мня сейчас два файла с js кодом:
popup.js и content.js
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 21:50
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
а можно в коде добавить реализацию того, чтобы я знал кода её нажать?
Реализацию чего?
Миниатюры
Расширение для Яндекс браузера  
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 21:51  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Реализацию чего?
ну того, я её точно НЕ жму раньше времени))
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 21:54
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ну того, я её точно НЕ жму раньше времени))
А что, с этим есть проблемы? По идее страница загрузилась и обработчик добавляется сразу. Это мгновение.
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 21:55  [ТС]
ну тогда последнее осталось, прикрепите пжл всё Ваше расширение и тогда уж верняк))
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 21:57
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ну тогда последнее осталось, прикрепите пжл всё Ваше расширение и тогда уж верняк))
А у меня его нет )) Я для яндекс-браузера никогда ничего не делал. Я им и пользуюсь-то только для перевода видеороликов )). Могу для файрфокса сделать по-быстрому.
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 22:00  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Могу для файрфокса сделать по-быстрому.
и на том спасибо большое
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 22:14
Ципихович Эндрю, Короче, я попробовал собрать и тут выяснилось, что основной контент страницы тоже, судя по всему грузится не сразу и скриптом. То есть удалось все это запустить только с помощью задержки
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
setTimeout(
function () {
    
    const writeButton = document.querySelector("a[href='#compose']"); // Заменён селектор на правильный
        const text = "тема письма*I:З.txt*8111@mail.ru, 8222@mail.ru";
        if (writeButton)
        {
          writeButton.addEventListener('click', () =>
          {
            setTimeout(function ()
            {
              if (text.split('*').length - 1 === 2)
              {
                const parts = text.split('*');
                const emailSubject = parts[0]; // Тема письма
                const filePath = parts[1]; // Путь к файлу (не используется в этом примере)
                const emailAddresses = parts[2]; // Емейлы
                document.querySelector('#compose-field-1').textContent = emailAddresses;
                document.querySelector('input[name="subject"]').value = emailSubject;
                console.log("Поля заполнены!");
              }
              else
              {
                console.log("Содержимое буфера обмена не удовлетворяет требованиям.");
              }
            }, 1000);
          });
        }
        else
        {
          alert('Кнопка "Написать" не найдена!');
     
        }
    addEventListener("DOMContentLoaded", function () {
        
    })
}
    ,
1000)
Расширение могу выложить, но там только манифест и этот скрипт, так что ничего интересного.

Добавлено через 4 минуты
Блин, я сначала напсал setInterval вместо setTimeout, оно сработало, но так делать не надо. С таймаутом пока не получилось. Подожди подгоню малость
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 22:15  [ТС]
diadiavova
Цитата Сообщение от diadiavova Посмотреть сообщение
Расширение могу выложить, но там только манифест и этот скрипт, так что ничего интересного
для меня это очень интересно=нужно
ок выложите, а то опробовал код с сообщения 54 - тоже не заработало, а так уже точно будет....
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 22:18
Вот так работает
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
setTimeout(
function () {
    
    const writeButton = document.querySelector("a[href='#compose']"); // Заменён селектор на правильный
        const text = "тема письма*I:З.txt*8111@mail.ru, 8222@mail.ru";
        if (writeButton)
        {
          writeButton.addEventListener('click', () =>
          {
            setTimeout(function ()
            {
              if (text.split('*').length - 1 === 2)
              {
                const parts = text.split('*');
                const emailSubject = parts[0]; // Тема письма
                const filePath = parts[1]; // Путь к файлу (не используется в этом примере)
                const emailAddresses = parts[2]; // Емейлы
                document.querySelector('#compose-field-1').textContent = emailAddresses;
                document.querySelector('input[name="subject"]').value = emailSubject;
                console.log("Поля заполнены!");
              }
              else
              {
                console.log("Содержимое буфера обмена не удовлетворяет требованиям.");
              }
            }, 2000);
          });
        }
        else
        {
          alert('Кнопка "Написать" не найдена!');
     
        }
    addEventListener("DOMContentLoaded", function () {
        
    })
}
    ,
2000)
Здесь я две секунды жду загрузки контента и столько же жду появления формы. Как уже выше писал, более надежно и спользовать MutationObserver, но там логика сложнее будет.
1
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 22:20
Выкладываю
Вложения
Тип файла: 7z yamail.7z (1.1 Кб, 2 просмотров)
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 22:31  [ТС]
нет-не работает, выложите пжл готовое расширение, а увидел, выложили
спасибо займусь завтра сравнивать вашу и мою реализацию, а пока не подскажите пожалуйста, есть расширение для Яндекс браузера в нём я устанавливаю пользователя, в хтмл коде это реализовано: <h1 id="fio_do">Фамилия Имя Отчество</h1>
который меняет скрипт джавыскрипта, как впоследствии можно с ворда прочитать что-же там установлено в id "id_fio"? топик создавал в ветке VBA: Ворд получить иконку расширения в Яндекс браузере, пока ответа нет, есть мысли? обратно передавать информацию через буфер обмена уже НЕ есть гут))

Добавлено через 8 минут
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
займусь завтра
не стал тянуть - загрузил не в Лису, а в Яндекс браузер они же на одном движке, и увы НЕ работает, что это может быть? может какие настройки?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
13.01.2025, 23:17
Ципихович Эндрю, я уже написал, что с яндекс-браузером я не работал. В лису можно загрузить расширение из файла, но если оно не проверено, то это можно сделать не во всех лисах. Можно поставить ESR версию и там надо снять флажок xpinstall.signatures.required в настройках. Но вообще, для проверки работы можно загрузить в девелоперском режиме. Кроме того, я посмотрел, для манифеста версии 3, нужно обязательно в манифест добавить идентификатор, специфичный для браузера, в той версии что я выложил я этого не сделал. Вот так работает
JSON
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
{
    "manifest_version": 3,
    "name": "EDDS ZGO",
    "version": "1.0",
    "description": "ЕДДС ЗГО",
    "permissions": [
        "activeTab"
    ],
    "content_scripts": [
        {
            "matches": [
                "https://mail.yandex.ru/*"
            ],
            "js": [
                "content.js"
            ]
        }
    ],
    "browser_specific_settings": {
        "gecko": {
            "id": "mailformdatainsertion@yandex.ru",
            "strict_min_version": "58.0"
        }
    }
}
Но еще раз говорю, лучше проверять все в режиме разработчика.

Добавлено через 5 минут
Разобрался как загрузить в яндекс-браузер. Все работает.
1
1709 / 578 / 74
Регистрация: 10.04.2009
Сообщений: 9,295
13.01.2025, 23:42  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Разобрался как загрузить в яндекс-браузер. Все работает.
а там манифест какой?

Добавлено через 1 минуту
а то расширение при загрузке ругается на
Code
1
2
3
4
5
6
    "browser_specific_settings": {
        "gecko": {
            "id": "mailformdatainsertion@yandex.ru",
            "strict_min_version": "58.0"
        }
    }
джипити советует
Code
1
2
3
4
5
6
"browser_specific_settings": {
    "yandex": {
        "id": "mailformdatainsertion@yandex.ru",
        "strict_min_version": "21.0"
    }
}
верно?

Добавлено через 5 минут
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
расширение при загрузке ругается
также и на
Code
1
2
3
4
5
6
"browser_specific_settings": {
    "yandex": {
        "id": "mailformdatainsertion@yandex.ru",
        "strict_min_version": "21.0"
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2025, 23:42
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru