Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2025, 21:17   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,153
По умолчанию Расширение для Яндекс браузера

здравствуйте, нужно написать расширение, сценарий такой, захожу на https://mail.yandex.ru
жму кнопку "написать", для начала нужно отловить это событие, сейчас у меня в джава скрипте, то что навяало мне по моему запросу джипити:
Код:
// Ждём загрузки DOM
        document.addEventListener('DOMContentLoaded', () => {
        const writeButton = document.querySelector('.compose-button'); // Замените селектор на правильный
        if (writeButton) {writeButton.addEventListener('click', () => {
            alert('Кнопка "Написать" нажата!');});}
        else
            {alert('Кнопка "Написать" не найдена!');}
        });
не работает, более всего напрягает, то что я говорю джипити, что я не знаю нужный селектор, а он талдычит мне - Замените селектор на правильный, а ведь хочу, чтобы расширение это само нашло тем более, что со временем его имя может измениться))
пока получаю алерт "Кнопка "Написать" не найдена!", ноя ведь её вижу и нажимал, как подправить? спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.01.2025, 00:59   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,757
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
я не знаю нужный селектор
Ну так в чем проблема его узнать? В браузере F12, там все есть...
Arigato вне форума Ответить с цитированием
Старый 12.01.2025, 09:58   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,153
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Ну так в чем проблема его узнать? В браузере F12, там все есть...
это клик ПКМ на кнопке "Написать" и выбрать из меню "Исследовать элемент"
а потом в меню выбрать "Копировать элемент" и будет скопировано:
Код:
<a href="#compose" class="Button2 Button2_type_link Button2_view_action Button2_size_m ComposeButton-m__containerContent--sPX6v" aria-disabled="false" role="button"><span class="ComposeButton-m__btnText--ZnUxS">Написать</span></a>
то есть кнопка с class'ом ComposeButton-m__btnText--ZnUxS?
то есть будет:
Код:
// Ждём загрузки DOM
        document.addEventListener('DOMContentLoaded', () => {
        const writeButton = document.querySelector('ComposeButton-m__btnText--ZnUxS'); // Заменён селектор на правильный
        if (writeButton) {writeButton.addEventListener('click', () => {
            alert('Кнопка "Написать" нажата!');});}
        else
            {alert('Кнопка "Написать" не найдена!');}
        });
так?
опробовал, пока
alert('Кнопка "Написать" не найдена!')

Последний раз редактировалось Ципихович Эндрю; 12.01.2025 в 10:04.
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.01.2025, 13:39   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,757
По умолчанию

Во-первых, у вас там не кнопка, а ссылка. Потому лучше обработчик вешать на ссылку, а не на внутренний элемент span. Во-вторых, имя класса должно начинаться с точки.
Arigato вне форума Ответить с цитированием
Старый 12.01.2025, 14:10   #5
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,153
По умолчанию

Arigato, спасибо за ответ, ОК, изменил:
Код:
// Ждём загрузки DOM
        document.addEventListener('DOMContentLoaded', () => {
        const writeButton = document.querySelector('.ComposeButton-m__containerContent--sPX6v'); // Заменён селектор на правильный
        if (writeButton) {writeButton.addEventListener('click', () => {
            alert('Кнопка "Написать" нажата!');});}
        else
            {alert('Кнопка "Написать" не найдена!');}
        });
НЕ помогло))
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.01.2025, 14:32   #6
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,468
По умолчанию

Держи.
querySelector - поддерждивает css правила.

Код:
       document.addEventListener('DOMContentLoaded', () => {
          //оба варианта рабюочие
          const writeButton = document.querySelector('a[href="#compose"]');
          //const writeButton = document.querySelector('span[class^="ComposeButton-m__btnText"]');
          if (writeButton) {
              writeButton.addEventListener('click', (e) => {
                alert('Кнопка "Написать" нажата! ' + e.target.tagName);
            });
           }
        });
uberchel вне форума Ответить с цитированием
Старый 12.01.2025, 14:42   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,153
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
оба варианта рабюочие
увы нет, оба опробовал - не работают, такие дела...........
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.01.2025, 14:45   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,468
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
увы нет, оба опробовал - не работают, такие дела...........
Значит проблема в другом, как варианты: кнопка создается динамически после загрузки документа, кнопка находится в iframe или еще что то, а так код технически верен
uberchel вне форума Ответить с цитированием
Старый 12.01.2025, 14:51   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,757
По умолчанию

Значит проблема где-то в другом месте. Например, данной кнопки может и не быть по загрузке документа, кнопка может появиться позже. А значит надо с помощью MutationObserver отловить момент создания этой кнопки.
Arigato вне форума Ответить с цитированием
Старый 12.01.2025, 14:51   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,757
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
Значит проблема в другом
Цитата:
Сообщение от Arigato Посмотреть сообщение
Значит проблема где-то в другом месте
...
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С Яндекс браузера скопированные фрагменты НЕ отображаются в буфере обмена ворда Ципихович Эндрю Свободное общение 1 25.12.2024 16:04
Расширение для браузера Chrome / Firefox Chaser_81 Фриланс 1 17.04.2024 20:08
Как парсить из Яндекс браузера? gimes Общие вопросы по программированию, компьютерный форум 0 17.01.2022 16:04
Что посоветуете для Яндекс браузера kyle16 Общие вопросы Web 0 22.05.2017 16:44
DELPHI Выбрать все файлы в каталоге и если расширение .lnk - переименовать, удалив расширение ТипичныйСтудент Помощь студентам 1 14.03.2014 23:54