Понадобилось необычное.
Есть HTML-приложение, где пользователь должен вводить некоторые данные. Для поиска этих данных пользователь открывает другие сайты чтобы найти нужные данные.
Для улучшения качества этого процесса очень хотелось бы записывать действия пользователя. В идеале нужно примерно следующее:
— Пользователь запускает наше приложение
— Кликает на ссылку, открывается новое окно или вкладка браузера
— Пользователь находит в этой вкладке нужную информацию и начинает её вводить в нашу форму
— После ввода текста наше приложение просит пользователя указать, где именно на сайте он это нашёл
— Пользователь возвращается на ту вкладку, выделяет мышкой нужное место, кликает правой кнопкой и выбирает какой-нибудь пункт во всплывающем меню
— Наше HTML-приложение каким-то образом получает ссылку на тот блок, который пользователь выделил
Нужно это для того, чтоб в следующий раз, если понадобится проверить, не устарели ли эти данные, мы могли бы проверить это автоматически — запросить HTML-ку сайта, найти нужное место и сравнить содержимое с тем, что там было при первой проверке.
Возможно ли вообще сделать такое только средствами браузера? Идеальным было бы реализовать это средствами JavaScript, но я подозреваю, что JavaScript не даст нам получать данные с другой страницы, даже если она была открыта по нашей ссылке. Пользователя можно попросить поставить нужные плагины, если это нужно. Если задача реализуема написанием плагина — могу и плагин написать, только требуется пинок в нужном направлении, как вообще к этой задаче подойти.
Здравствуйте, Artem Korneev, Вы писали:
AK>Возможно ли вообще сделать такое только средствами браузера? Идеальным было бы реализовать это средствами JavaScript, но я подозреваю, что JavaScript не даст нам получать данные с другой страницы, даже если она была открыта по нашей ссылке. Пользователя можно попросить поставить нужные плагины, если это нужно. Если задача реализуема написанием плагина — могу и плагин написать, только требуется пинок в нужном направлении, как вообще к этой задаче подойти.
Ключевое слово — букмарклет. Пользователь вешает себе «закладочку» на панель закладок, адрес которой выглядит как
[js]
javascript

function(){
})();
[/js]
При её нажатии в любую страницу может инджектиться код, который например а) берёт адрес страницы; б) берёт выделенный пользователем кусок текста и в) отправляет всё это на ваш сайт. Многие штуки типа Tumblr или del.icio.us так делают.
Здравствуйте, Artem Korneev, Вы писали:
Г>>Ключевое слово — букмарклет. Пользователь вешает себе «закладочку» на панель закладок [...]
Г>>При её нажатии в любую страницу может инджектиться код, который например а) берёт адрес страницы; б) берёт выделенный пользователем кусок текста и в) отправляет всё это на ваш сайт.
AK>Вариант интересный, но боюсь что для моего случая не подойдёт.
AK>Мне нужно отправлять это не на сайт, а в другое HTML-приложение. Там нужно ведь передавать ещё контекстную информацию — ну хотя бы ID сессии, чтоб потом можно было эти данные отделить от других. Передавать это как параметры на ту вторую страницу врятли получится — пользователь вполне может перейти там ещё по двум-трём ссылкам и все параметры сбросятся.
AK>А можно ли как-то передать это через куки? Ну т.е. открыть новую страницу в отдельной вкладке, но при этом передать какие-то куки, которые можно было бы прочитать из того куска JS-кода чтоб отправить на сервер.
Ну, вы довольно абстрактно описываете задачу, но я вот перечитал исходное письмо:
— Пользователь запускает наше приложение
— Кликает на ссылку, открывается новое окно или вкладка браузера
— Пользователь находит в этой вкладке нужную информацию и начинает её вводить в нашу форму
— После ввода текста наше приложение просит пользователя указать, где именно на сайте он это нашёл
— Пользователь возвращается на ту вкладку, выделяет мышкой нужное место, кликает правой кнопкой и выбирает какой-нибудь пункт во всплывающем меню
— Наше HTML-приложение каким-то образом получает ссылку на тот блок, который пользователь выделил
...и мне кажется, что самый правильный путь (если это возможно в вашем случае) — объединить шаги «находит в этой вкладке нужную информацию и начинает её вводить в нашу форму» и «возвращается на ту вкладку, выделяет мышкой нужное место». Я себе это как-то так представляю (опять же, на примере тумблера — попробуйте, как его букмарклет работает!):
* вы отправляете пользователя на сайт по ссылке
* найдя там нужную информацию, он её выделяет, а затем нажимает на ваш букмарклет на своей панели закладок
* букмарклет делает следующее:
а) считывает со страницы её адрес + что там было выделено
б) открывает поверх страницы всплывающее окно — вашу форму (адрес всплывающего окна будет типа вашсайт/вашаформа, поскольку это страница открытая с вашего сайта, у ней есть вся информация о сессии и куках) и передаёт в неё информацию с шага (а)
в) пользователь заполняет форму, она отправляется на ваш сервер + вместе с ней отправляется информация «а что было выделено и на какой странице»
Как-то так.
Вот картинка использования тумблерского букмарклета на этом самом сообщении (текст я не вводил, просто выделил и нажал на букмарклет):
| | скриншот |
| |  |
| | |