17.10.2016, 08:26
|
Профессор
|
|
Регистрация: 25.09.2016
Сообщений: 163
|
|
Блин, я думаю, чего у меня null всё время показывает querySelector(с любым тегом).
Проверил:
alert(document.documentElement.innerHTML)
Оказывается document берёт не из той страницы, которая открылась, а из страницы, на которой подключен скрипт(я её не подключал, видимо хром сам).
<head></head><body><script src="background.js"></script></body>
|
|
17.10.2016, 09:09
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Артист, html - это текст, но ковырять его самому не надо. Ты же не станешь ковырять файл екзеля ради редактирования таблицы. Ты напишешь скрипт работающий с документом как с объектом. Для браузера хтмл - такой же документ и браузер делает из него объект. Поскольку документ описан в иерархических сущностях хтмл, то и объект представляет из себя дерево. Вот и лазай по нему, или лазий.
Почитай документацию уже.
|
|
17.10.2016, 13:12
|
Профессор
|
|
Регистрация: 25.09.2016
Сообщений: 163
|
|
Да я полазил бы - не лазиется...
Я в фоновом скрипте отлавливаю когда в браузере страница открылась и все элементы прогружены.
А document не видит эту страницу, видит только страницу с которой подключен скрипт...
Смотрел исходники ABP Block'a, он же как - то убирает со страницы элементы.
И ничего не нашел.
Вернее нашел, но не работает.
Пробовал так:
alert(window.document.documentElement.innerHTML)
alert(this.window.document.documentElement.innerHTML)
Ещё находил там(в исходниках), event. tabId , смотрел там номер возвращает, может от него надо получать...
|
|
17.10.2016, 13:16
|
Профессор
|
|
Регистрация: 25.09.2016
Сообщений: 163
|
|
Сообщение от warren buffet
|
Почитай документацию уже.
|
Читал, сто раз уже, гуглил... Ничего не понятно(даже с переводом).
Вот тут про webNavigation
И там вообще ничего нет, как получить что - то со страницы...
|
|
17.10.2016, 18:34
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Артист, ты юзерский скрипт что ли пишешь, или какой-то поддон?
Поставь на FF - Greasemonkey и отстань от этого тупого хрома навсегда.
|
|
17.10.2016, 18:37
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Сообщение от Артист
|
Вот тут про webNavigation
|
Это параллельная вселенная, ты уверен, что взял правильный курс? Опиши задачу на русском языке, может и делать ничего не надо, все может быть уже сделано.
|
|
17.10.2016, 20:49
|
Профессор
|
|
Регистрация: 25.09.2016
Сообщений: 163
|
|
Ну, есть игра одна браузерная, мне надоело что невозможно что - то продать в игре, т.к. 7к игроков онлайна.
Ну я накатал приложение которое всё автоматом продаёт, и теперь хочу сделать чтобы не по кнопке щелкать для этого дела, а просто поставил галочку, и пускай он ходит по карте да торгует.
Думал прямо на странице сделать 2 кнопки(или чекбоксы)...
Ну и вот нужно отловить, когда перс пришёл...
Сообщение от warren buffet
|
Поставь на FF - Greasemonkey и отстань от этого тупого хрома навсегда.
|
Да это всё переделывать нужно...Тем более я чисто хромом пользуюсь, проще к нему делать напрямую...
Последний раз редактировалось Артист, 17.10.2016 в 20:58.
|
|
17.10.2016, 21:17
|
Профессор
|
|
Регистрация: 25.09.2016
Сообщений: 163
|
|
Вот тут описывается как это сделать, а я не понимаю, т.к. вообще не знаю JS.
Внедрение Javascript-кода в страницу через Chrome Extension
Цитата:
|
background.js
$.get(chrome.extension.getURL('/injected.js'),
function(data) {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.innerHTML = data;
document.getElementsByTagName("head")[0].appendChild(script);
document.getElementsByTagName("body")[0].setAttribute("onLoad", "injected_main();");
}
);
- Мы используем стандартную функцию Chrome Extension API chrome.extension.getURL(), которая возвращает путь, локальный для расширения.
- Далее мы запрашиваем данный файл через ajax и после успешного получения создаем новый элемент в основной странице (Благодаря Shared DOM мы можем манипулировать элементами страницы без лишних усилий)
- Последним пунктом мы устанавливаем функцию, которая будет вызвана после загрузки страницы (функция injected_main() описана в файле injected.js)
|
1 - вообще не понял, что возвращает и от куда?
|
|
17.10.2016, 21:28
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Ну так парсить не надо ничего. И вообще ты не ту рубрику полез, поэтому тебя и не понимают. Есть раздел для юзерских скриптов - который под браузер. Тебе нужен спец по такой писанине для хрома.
В упомянутом GM юзерский скрипт ничем от обычного не отличается. Почему в хроме какие-то дебильные заморочки, я не понял. В общем если дело ограничивается работой с документом, то в ГМ пишут вот так
var elem=document.querySelector('.foo');
и все работает, в точности как если бы оно было в скрипте загруженным со страницей.
А вот когда тебе захочется забраться в кишки этих самых скриптов, там есть небольшой геморрой с интерфейсом UnsafeWindow, но через него почти все можно получить по части кодов страницы - переменные, функции, писать, запускать и все такое.
И только в редких случаях, когда не получается добраться нормально, тогда приходится что-то парсить. Но такое ну очень редко бывает.
|
|
17.10.2016, 21:31
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Сообщение от Артист
|
1 - вообще не понял, что возвращает и от куда?
|
Нехилая там эпидерсия.
Какой нахер аякс? Скрипт для браузера хранится локально. Ты куда полез вообще?
|
|
|
|