Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
1

Javascript и Chrome расширение

13.10.2015, 23:06. Показов 1362. Ответов 16
Метки нет (Все метки)

Я от нечего делать решил запилить себе расширение для хрома. Начинаю с простых вещей, чтобы потом разобраться с более сложным. Само расширение создать могу, (я запаковываю туда тупо js с всякими описаниями\etc) но мне хотелось бы сделать так, чтобы был popup с настройками (отключить скрипт\включить скрипт). Я смотрел примеры, но там очень много всего, я не могу разобраться.

Итог: мне нужно разобраться как сделать так, чтобы мое расширение имело popup с настройками, в которых можно отключить\включить выполнение скрипта.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2015, 23:06
Ответы с готовыми решениями:

Расширение chrome
Здравствуйте, скажите пожалуйста, возможно ли через расширение google chrome делать клики на сайте....

Не работает Chrome расширение
Есть расширение на Steam Market для браузера Google Chrome, но оно не работает, автор его давно не...

Расширение для Chrome
Подскажите пожалуйста, куда копать... Хотелось бы написать небольшое расширение для chrome которое...

Расширение Google Chrome для рулетки CS:GO
Добрый времени суток! Сразу прошу, не серчайте, если написал не в ту тему:) Дело такое, есть...

16
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
13.10.2015, 23:15 2
minedroid, это называется default_popup, почитай, он достаточно прост в реализиции
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
14.10.2015, 15:40  [ТС] 3
BANO, да я знаю как реализовать popup, мне главное понять как сделать смену и сохранение настроек для включения и выключения работы скрипта.

Я думаю, нужно куда-то записывать (хотя бы) 0 или 1. А скрипт при запуске это читает (1=вкл\0=выклы, например), но вот куда и как записывать - не знаю.
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.10.2015, 18:05 4
minedroid, на это есть localStorge
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
14.10.2015, 18:48  [ТС] 5
BANO, а подробнее?) Так как мне сделать так, чтобы взять параметр из этого локала? Видел примеры с записью, но не понял как работает само чтение\функция
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.10.2015, 19:07 6
minedroid, почитайте, поймите
там вообще всё делается на колбеках
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
14.10.2015, 19:13  [ТС] 7
BANO, а по ссылке вообще все по-другому написано. Ладно, видно не судьба мне в js пока, надо распахивать и распахивать его. Я просто не могу понять, как это вообще работает.
Ну записал я это значение куда-то, а что дальше? Что-то нужно добавить в рабочий код или какой-то параметр отвечает за это - я не знаю.
Объясните принцип?)
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.10.2015, 19:16 8
minedroid, чтение работает вообще просто

вы покажите как вы сделали запись?
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
14.10.2015, 20:54  [ТС] 9
BANO, извиняюсь, пока ничего не сделал, пытаюсь понять, а потом уже написать из понятого и тестировать.

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

Добавлено через 1 час 2 минуты
BANO, нет, ничего я не понял. Пытался повесить на батон - не работает.

Будь другом - напиши мне коды батонов, 1-запишет в локал нужное значение, 2 - Запишет значение из локал в спан.
<button onclick="записать в TestValue значение tseT">write test</button>
<button onclick="отобразить в span значение TestValue">show test</button>
<span id="writehere">empty</span>

Обниму и расцелую.

Добавлено через 33 минуты
Нашел интересный пример на гитхабе (какой раз выручает): GitHub - запись\чтение локал

Ничего лишнего, просто вводим текст - получаем его обратно. То, что мне было нужно.
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.10.2015, 20:57 10
minedroid,
HTML5
1
2
3
<button onclick="set()">write test</button>
<button onclick="get()">show test</button>
<span id="writehere">empty</span>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
function set(){
    chrome.storage.local.set({TestValue:"tesT"},function(){alert("Значение поставлено")})
}
 
function get(){
    chrome.storage.local(/* а тут начинается прикольная вещь, я могу либо указать строку "TestValue", 
                 либо массив с этой строкой, либо объект*/
         "TestValue",
        function(data){
             writehere.innerHTML=data.TestValue;
             alert("Значение взято")
        })
}
Добавлено через 1 минуту
вот и сам разобрался, только ты должен знать разницу между sync и local
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
14.10.2015, 21:16  [ТС] 11
BANO, кстати не работает Ваш код. Ну или я опять накосячил. В консоли пишет что-то про безопасность. Краем глаза читал, что там нельзя исполнять какие-то скрипты в хтмл, но не понял какие.
Скрин:
Javascript и Chrome расширение


Пробовал и <script>код<script> и <script src="popup.js"></script>

Наверно здесь еще не хватает манифеста докучи:

Кликните здесь для просмотра всего текста
{
"background_page" : "bck.html",
"content_scripts" : [
{
"js":[ "json.js" ],
"matches":[ "http:/*/*" ],
"run_at":"document_end"
}
],
"background": {
"scripts": ["pp.js"],
"persistent": false
},
"browser_action": {
"default_title": "bbb",
"default_popup": "pp.html"
},
"description" : "abc",
"manifest_version": 2,
"name" : "TestApp",
"permissions" : [ "http://*/*", "unlimitedStorage", "storage"],
"version" : "1.1.1"

}


Скрипты все писал в pp.html , background (bck.html) не трогал вообще.
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.10.2015, 21:27 12
Лучший ответ Сообщение было отмечено minedroid как решение

Решение

minedroid, блин, он же не eval-ит
это я накосячил

Цитата Сообщение от minedroid Посмотреть сообщение
Скрипты все писал в pp.html
у него в настройках стоит, что он не будет выполнять то, что стоит в html, я имею в виду js скрипты, поэтому все скрипты в расширениях выносят в отдельные файлы

Добавлено через 2 минуты
короче
popup.html
HTML5
1
2
3
4
<button id="setb">write test</button>
<button id="getb">show test</button>
<span id="writehere">empty</span>
<script src="popup.js"></script>

popup.js
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function set(){
    chrome.storage.local.set({TestValue:"tesT"},function(){alert("Значение поставлено")})
}
 
function get(){
    chrome.storage.local(/* а тут начинается прикольная вещь, я могу либо указать строку "TestValue", 
                 либо массив с этой строкой, либо объект*/
         "TestValue",
        function(data){
             writehere.innerHTML=data.TestValue;
             alert("Значение взято")
        })
}
setb.onclick=set;
getb.onclick=get;
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
14.10.2015, 21:38  [ТС] 13
BANO, BANO, и снова ошибка С:
Оставил мне для проверки или сам ошибся?)

Цитата Сообщение от BANO Посмотреть сообщение
function get(){
* * chrome.storage.local(/* а тут начинается прикольная вещь, я могу либо указать строку "TestValue",
* * * * * * * * *либо массив с этой строкой, либо объект*/
* * * * *"TestValue",
* * * * function(data){
* * * * * * *writehere.innerHTML=data.TestValue;
* * * * * * *alert("Значение взято")
* * * * })
}
chrome.storage.local что за функция такая ? chrome.storage.local.get
И.. Кажется хром ругался на комментарий, но я уже не уверен, там просто на одной строке все было. Но без комментария ошибка другая стала.

Короче все работает теперь, а это главное. В очередной раз спасибо тебе, BANO.
Спасибо за наводки по линкам и за то, что возился со мной снова С: . Хороший ты человек. Да и программист явно не плохой.
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.10.2015, 21:41 14
Цитата Сообщение от minedroid Посмотреть сообщение
сам ошибся?)
сам ошибся, забыл про неё

Добавлено через 47 секунд
комент многострочный, на него ничто не может ругаться
1
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
15.10.2015, 16:53  [ТС] 15
Up, снова не получается)

В итоге есть код:
pp.js
Кликните здесь для просмотра всего текста
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function off(){
    chrome.storage.local.set({Enbld:"off"})
}
 
 function on(){
    chrome.storage.local.set({Enbld:"on"})
}
 
function get(){
    chrome.storage.local.get("Enbld",function(data){writehere.innerHTML=data.Enbld;})
}
offm.onclick=off;
onm.onclick=on;
getm.onclick=get;


И pp.html
Кликните здесь для просмотра всего текста

HTML5
1
2
3
4
5
<button id="onm">On</button>
<button id="offm">Off</button>
<button id="getm">Get</button>
<span id="writehere">empty</span>
<script src="pp.js"></script>


json.js (из прошлого топика)
Кликните здесь для просмотра всего текста
Javascript
1
2
3
4
if (chrome.storage.local.get("Enbld")==on) {
;[].forEach.call(document.getElementsByClassName("test"),function(e){e.innerHTML=e.innerHTML.match(/^([1-9aа]|10)$/)?e.innerHTML:"empty";})
}
else{}


И скрипт при любом раскладе не работает.
Даже если ставить код в else - не работает. Видимо проблема опять с защитой хрома, выручай
0
Ренегат
Эксперт HTML/CSS
1736 / 1081 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
15.10.2015, 22:51 16
minedroid, что именно не работает?
локалстордж или вывод?
0
-1 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 75
16.10.2015, 22:17  [ТС] 17
BANO, все уже, пофиксил. Все с апи хрома перевел на localstorage[]\etc. Просто я с кастомного скрипта проверял значение вкл\выкл, запускал скрипт если вкл. А из кастомного скрипта доступа в хром апи нет. А для обычного стоража есть решение. Вот так.

В итоге: скрипт, который убирает ненужное, 3 кнопки и поле - вкл, выкл, состояние, состояние.

Добавлено через 21 час 23 минуты
Снова нужна помощь XD

Все тот же многострадальный код:
Javascript
1
;[].forEach.call(document.getElementsByClassName("test"),function(e){e.innerHTML=e.innerHTML.match(/^([1-10aа]|10)$/)?e.innerHTML:"empty";})

Как мне обозначить '1-10aа' за переменную?

Добавлено через 1 час 39 минут
Я опять разобрался. Самому смешно, как все было просто:
Javascript
1
2
var num=/^([1-10aа]|10)$/;
;[].forEach.call(document.getElementsByClassName("test"),function(e){e.innerHTML=e.innerHTML.match(/^([1-10aа]|10)$/)?e.innerHTML:"empty";})
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2015, 22:17

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Начать писать расширение для Chrome
Добрый день, никогда не писал расширения для браузеров, но надо написать одно которое бы...

Необходимо создать расширение для Google Chrome
Не знаю даже в какую тему писать... Знаю, что можно сделать свое расширение для google chrome, и,...

Расширение Google Chrome работает не на всех сайтах
Здравствуйте! Учусь писать расширения, столкнулся с такой проблемой: Есть простой пример...

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.