Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для masteris
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 47
Chrome Extension

Как заставить расширение для браузера исполнить, предложенный в посте, JavaScript-код?

20.11.2018, 20:58. Показов 1283. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Решил написать простое расширение для браузера "Google Chrome" с следующей задачей: нужно, чтобы JavaScript-код, который прописан в файле controls.js, исполнился в полной мере. На текущий момент код выполняется до тех пор, пока не обновится страница. После обновления страницы (в нашем случае - после перехода на сайт гугла) код скрипта начинает проигрываться сначала. Но, как заставить код из файла controls.js продолжить исполнение скрипта даже после обновления?

Ниже перечислил название файлов и их содержимое.

manifest.json
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "name":"Расширение",
  "description":"Простое расширение для браузера",
  "version":"1.0",
  "manifest_version":2,
  "content_scripts": [
    {
      "matches":["<all_urls>"],
      "js" : ["controls.js"],
      "run_at":"document_end"
    }
  ]
}
controls.js
JavaScript
1
2
3
4
5
6
7
8
function func1() {
    window.location.href = "https://www.google.ru/";
    function func2() {
        window.location.href = "https://yandex.ua/";
    }
    window.setTimeout(func2, 5000);
}
window.setTimeout(func1, 2000);
Заранее спасибо за подсказки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2018, 20:58
Ответы с готовыми решениями:

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

Как создать расширение для браузера, меняющее значение css элементов?
Какие файлы нужны для расширения, чтоб при добавлении расширения, оно сразу активировалось.И работало.

Как исполнить php-код, зашифрованный в строке?
В переменной содержится строка: &amp;lt;?echo 'test';?&amp;gt;&amp;lt;h6 class=&quot;h_lite h_lite-b&quot;&amp;gt;TEXT&amp;lt;/h6&amp;gt; Требуется расшифровать строку,...

5
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
20.11.2018, 23:34
masteris, на ум пришел такой вариант:

Сделать проверку, на какой странице запущен скрипт:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function func2() {
  window.location.href = "https://yandex.ua/";
}
 
function func1() {
    if(window.location.href == "https://www.google.ru/") {
       window.setTimeout(func2, 5000);
    } else {
       window.location.href = "https://www.google.ru/";
    }    
}
 
window.setTimeout(func1, 2000);
явный минус этого решения - при просто переходе на сайт гугла скрипт все равно сработает.
1
 Аватар для masteris
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 47
21.11.2018, 09:34  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Сделать проверку, на какой странице запущен скрипт
Спасибо. Вариант интересный.
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
21.11.2018, 14:16
masteris, проблема в том, что время жизни экземпляра контент-скрипта совпадает со временем жизни документа, для которого он загружен, поэтому ожидать, что существует полноценное решение, позволяющее ему продолжить выполняться после обновления страницы - вряд ли существует. Здесь нужно использовать бэкграунд-скрипт. Общий сценарий будет выглядеть примерно следующим образом:
Из контент-скрипта отправляется сообщение, содержащее: команду перезагрузить страницу, идентификатор вкладки, адрес и таймаут. В бэкграунде при получении этой команды она исполняется через заданный промежуток времени с помощью tabs.executeScript. И только после отправки сообщения контент-скрипт должен перезагрузить страницу. Если требуется более точная синхронизация по времени, то нужно будет еще учесть, что на загрузку страницы оно(время) тоже понадобится. Здесь можно либо выделить дополнительные секунды, либо придется из контент-скрита этой уже новой страницы отправлять в бэкграунд сообщение о том, что она загрузилась и только после этого запускать таймаут (это уже сложнее, но тоже вполне решаемо), есть и другие варианты, там надо посмотреть, что лучше работает.
1
 Аватар для masteris
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 47
22.11.2018, 14:06  [ТС]
diadiavova, логику понял, но не соображу, где именно и какой код прописать, дабы всё работало. Есть возможность прислать наглядный пример?
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
22.11.2018, 16:23
Цитата Сообщение от masteris Посмотреть сообщение
Есть возможность прислать наглядный пример?
Простейший вариант, от которого можно "плясать". Здесь вверху всех старинц будет появляться табличка с текстом Go to google и Hide. Первая вызывает ту самую функцию, которая будет осуществлять переход на гугл и по истечению пяти секунд возвращаться к исходной странице. Я там никаких событий загрузки не отслеживал просто выполнил переходи установил сразу таймаут. Но из этого примера можно все понять. Тестировалось на странице яндекса. На некоторых страницах таблички может не быть, это бывает, когда вверху ее что-то загораживает (абсолютное или фиксированное позиционирование), но на яндексе все видно.
Вложения
Тип файла: zip masteris.zip (1.5 Кб, 3 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2018, 16:23
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru