Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Расширение для Chrome (https://javascript.ru/forum/events/66850-rasshirenie-dlya-chrome.html)

voicemage 14.01.2017 10:24

Расширение для Chrome
 
Здравствуйте, господа и дамы. Третий день мучаюсь, создавая расширение парсер страницы. Надеюсь вы мне сможете мне помочь.

Суть в том, что я подключаю JQuery, но он не видит текст страницы.
В данном случае строчка var test = $('.mydiv').text(); выполненная из скрипта не приводит ни к чему кроме пустой строки. При этом в консоли когда пишу те же строчки, то всё нормально. Подскажите пожалуйста, что я делаю не так.

В туториалах написано, что скрипты content_scripts прописанные в manifest.json имеют доступ к DOM. И по идее то должно работать.

Можно конечно получить URL страницы из строки браузера, но это помоему костыли, и в этом случае придется еще раз загружать страницу.


$(document).ready(function () {
	
	
	console.log("parser_ready");
	var test = $('.mydiv').text();
	console.log("var test");
	console.log(test);
	console.log("log test");
	$('#wrapper').html("test");
});

рони 14.01.2017 10:38

Цитата:

Сообщение от voicemage
При этом в консоли когда пишу те же строчки, то всё нормально

значит элемента ещё нет, когда работает скрипт ... проверяли?
console.log( $('.mydiv').length);

voicemage 14.01.2017 11:26

Скрипт работает когда вся страница загрузится. Там в manifest Указано что
"content_scripts": 
	[
	    {
		"matches": ["*://*/*"],
		"js": ["js/jquery-3.1.1.min.js","js/parser.js"],
		"run_at" : "document_end"
	    }


Тоесть чтобы срабатывал вконце. Когда уже всё загрузилось.

насчет legth показывает что длинна 0. Но если в консоли вводить то все как надо. Предлагаете таймером подождать?

А в скрипте там
$(document).ready(function () {
оно же так и говорит что на реди должно работать только.

рони 14.01.2017 11:40

Цитата:

Сообщение от voicemage
оно же так и говорит что на реди должно

попробуйте на
$(window).load(function () {

voicemage 14.01.2017 11:48

Оттянул на 2 секунды таймаутом, всё стало работать. Спасибо за подсказку.


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