Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Расширение для Google Crome (https://javascript.ru/forum/css-html/71442-rasshirenie-dlya-google-crome.html)

ChezzyChezz 19.11.2017 14:04

Расширение для Google Crome
 
Добрый день ув. форумчане. Подскажите пример скрипта который будет брать на сайте определенный div и заменять его контент на свой.

Aetae 20.11.2017 03:02

Вот минимальное расширение:
Пример: manifest.json
{
  "name": "Test",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Test",
  "content_scripts": [
    {
      "matches": ["*://*.google.ru/*"], 
      "js": ["content.js"]
    }
  ]
}
Пример: content.js
document.querySelector('body') //меняем селектор на нужный
    .innerHTML = 'Hello google!';
его уже можно загрузить в режиме разработчика и сходить на google.ru, посмотреть на результат.

ChezzyChezz 22.11.2017 17:39

Подскажите урок или пример загрузки данных с БД или сайта?
Т.е.:

.innerHTML = 'Hello google!'; Где Hello google берется с базы данных, или сайта.

Aetae 23.11.2017 01:09

Пример: manifest.json
{
  "name": "Test",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Test",
  "content_scripts": [
    {
      "matches": ["*://*.google.ru/*"],
      "js": ["content.js"]
    }
  ],
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": [
	"https://www.deviantart.com/"
  ]
}
Пример: content.js
chrome.runtime.sendMessage( 'get art', // отравляем запрос в фоновый процесс
	html => document.querySelector('body').innerHTML = html 
);
Пример: background.js
chrome.runtime.onMessage.addListener( 
	(message, sender, sendResponse) => fetch('https://www.deviantart.com/') // запрашиваем сайт
		.then( response => response.text() )
		.then( sendResponse ) // отравляем результат обратно на вкладку
	&& true // !возвращаем true, чтобы вкладка дождалась ответа
)

ПрограммистСергей 25.11.2017 10:57

Блокатор звука
 
Всем привет! Не подскажет ли кто?
Понадобилось расширение, которое блокирует звук на определенных сайтах. Типа заходишь на яндекс.музыку, нажимаешь воспроизвести... судя по сайту она вроде бы идет, но ты ее не слышишь, потому что из-за расширения до браузера не доходит. В этом и заключается вся задача.
Само-то расширение, я, конечно, сделал, вот только javascriptа, который просто блокировал бы звук, нигде нет. Вернее есть, но только если ты разработчик сайта, а не расширений.
Не встречался ли вам такой скрипт?
Заранее спасибо.

P. S. : Я понимаю, что проще скачать расширение где-то и все. Но мне нужно его скрыть от жены, поэтому делаю сам, а то догадается, выключит и будет ночью музыкой спать мешать.

ChezzyChezz 02.01.2018 13:19

Я беру 2 блока с сайта, и хочу заменить их. Есть вот такой код:
var elements = document.querySelectorAll('div .black, div .yellow');
for (var i = 0; i < elements.length; i++) elements[i].innerHTML = 'text';


Мне надо:
- Для каждого блока разный контент, в моем случает text в обоих div
- Значение брать с сайта site.ru/bd.php, где .black - textblack, изменил - сохранил и оно в расширении появилось)

ChezzyChezz 02.01.2018 13:38

Цитата:

Сообщение от Aetae (Сообщение 471048)
Пример: manifest.json
{
  "name": "Test",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Test",
  "content_scripts": [
    {
      "matches": ["*://*.google.ru/*"],
      "js": ["content.js"]
    }
  ],
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": [
	"https://www.deviantart.com/"
  ]
}
Пример: content.js
chrome.runtime.sendMessage( 'get art', // отравляем запрос в фоновый процесс
	html => document.querySelector('body').innerHTML = html 
);
Пример: background.js
chrome.runtime.onMessage.addListener( 
	(message, sender, sendResponse) => fetch('https://www.deviantart.com/') // запрашиваем сайт
		.then( response => response.text() )
		.then( sendResponse ) // отравляем результат обратно на вкладку
	&& true // !возвращаем true, чтобы вкладка дождалась ответа
)

если я заменяю всю страницу - заменяет, если я пытаюсь заменить только один div <div class="session-chat">


chrome.runtime.sendMessage( 'get art', // отравляем запрос в фоновый процесс
    html => document.querySelector('session-chat').innerHTML = html
);


У меня ошибка:
Error in event handler for (unknown): TypeError: Cannot set property 'innerHTML' of null
    at chrome.runtime.sendMessage.html (chrome-extension://fcipomdjmklgjgjnlcjoeagkolklgfgm/content.js:2:62)

Aetae 02.01.2018 22:23

Английским языком вам написано:
TypeError: Cannot set property 'innerHTML' of null
ТипаОшибка: немогу покласть свойство нутрянойХтмл в нуль

Т.е. нет такого элемента на странице.
"session-chat" всё-таки не имя элемента, а класс и потому должен быть указан соответствующим образом('.session-chat').


Часовой пояс GMT +3, время: 12:20.