Получить доступ к dom из chrome расширения?

Имеется один чат, где есть левая боковая панель, так вот, я хочу через расширения эту боковую панель прятать и в localstorage записать флаг.
Моё расширение состоит из popup.html, content.js, jquery.js, manifest.json и картинок.

manifest.json
{	
	"manifest_version": 2,
	"name": "LaravelRUS Hide",
	"version": "1.0",
	"icons": {
	  "16":	"img/LaravelRUS16.png",
	  "48":	"img/LaravelRUS48.png"
	},
	"browser_action":{
		"default_title": "LaravelRUS Hide",
		"default_icon": "img/LaravelRUS16.png",
		"default_popup":"popup.html"
	},
	"content_scripts": [{
		"matches": [
			"http://gitter.im/*",
			"https://gitter.im/*",
			"*://*.gitter.im/*"
		],
		"js": [
			"js/jquery.min.js",
			"js/content.js"
		]
    }]
}


popup.html
<!DOCTYPE HTML>
<html>
	<head>
		<script type="text/javascript" src="js/jquery.min.js"></script>
		<script type="text/javascript" src="js/content.js"></script>
	</head> 
<body>
<button id="btn">BTN</button>
</body>
</html>

content.js
$(document).ready(function(e){
	var elem = e.target || e.window;
	$(elem).click(function(){
		console.log('click');
	});
});


такой метод не помогает. Как можно скажем зайдя на страницу которая указана в manifest, нажать кнопку в расширении и скрыть блок?
  • Вопрос задан
  • 8832 просмотра
Решения вопроса 1
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
делал без всяких структур
простой js, который подключает jquery(если надо) и прямо из него как обычно работаешь со страницей, никаких особых приемов не надо.

https://gist.github.com/S-anasol/9932506
Вот пример.

Установка: Drag&Drop на список расширений хрома, подтверждаем.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Во-первых, контент-скрипты имеют полный доступ к DOM-дереву страницы, никаких проблем с этим быть не должно. Нет только доступа к переменным, определенным "родными" скриптами страницы.

Во-вторых, у вас какой-то странный content.js. Я не знаю, чего вы пытались этим добиться, но попытаюсь угадать:

$(function () {
    $(document).on('click', function () {
        console.log('click');
    });
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы