Наша компания закупила несколько информационных киосков для того, чтобы собирать информацию о удовлетворенности клиентов с помощью «электронной книги жалоб и предложений», а также дать нашим уважаемым посетителям возможность изучить сайты компании.
На первый взгляд задача выглядит просто. Давайте поставим windows 7, настроим firefox с расширением R-kiosk и будет счастье.
Ок. Сделали на корпоративном сайте красивую страницу со ссылками на наши сайты, ссылкой на форму опроса клиентской удовлетворенности. Поставили на терминал Windows7, поставили firefox, поставили r-kiosk, добавили firefox в автозагрузку. Перезагрузка!
Грабли!
Грабля первая — клавиатура.
На киоске нет клавы. Что делаем? Включаем встроменную экранную клаву win7. Работает, но пользователь может нажать ctrl-esc, ctrl-f4 и другие полезные комбо. Выключаем виртуальную клавиатуру, гуглим, после перебора вариантов добавляем extention «fx keyboard».
Отлично. Работает. К слову, расширение нехитрое и дизайн самой клавиатуры можно поменять несложными манипуляциями в коде расширения.
Грабля №2. Отсутствие минимальных кнопок навигации «Назад», «Домой» в браузере.
Проблему можно решить на страницах опросника путем добавления необходимых кнопок прямо в html. С сайтами такой фокус не проходит. Переделывать 4 сайта только ради терминалов — увольте. Кружение вокруг одной точки в течение дня. Не приходит в голову ничего. К вечеру решение есть! Внедряем в шапку всех сайтов вызов javascript кода, который в фиксированную позицию экрана внедряет 2 графические кнопки «Назад», «Домой». Код срабатывает только тогда, когда referrer страницы совпадает с адресом домашней страницы терминала. У каждого терминала домашняя страница отличается кодом терминала http://www.example.ru/survey/?p=код терминала
. Скрипт, до кучи, при отсутствии активности пользователя возвращает браузер на первую страницу.
function createSurveyCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readSurveyCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function initSurvey() { var ref = document.referrer.split("?"); if (ref[0] == "http://www.example.ru/survey/") { if (typeof ref[1] != 'undefined') { reg = /p=([a-z]+)/; if (ret = reg.exec(ref[1])) { createSurveyCookie("_apr_survey", ret[1], 1); } } } if (readSurveyCookie("_apr_survey")) { var doc = document.body; var div = document.createElement("div"); div.id = "SurveyNav"; doc.appendChild(div); var html = '<div id="SurveyHome" onClick="homeSurvey()"></div><div id="SurveyBack" onClick="backSurvey()"></div>'; div.innerHTML = html; delayHome(); doc.addEventListener("keypress", delayHome, false); doc.addEventListener("mousemove", delayHome, false); } } var goHomeTimeout = null; function delayHome() { if (goHomeTimeout) clearTimeout(goHomeTimeout); goHomeTimeout = setTimeout( function () { document.location.href='http://www.example.ru/survey/?p='+readSurveyCookie("_apr_survey"); }, 300000); } function homeSurvey() { document.location.href="http://www.example.ru/survey/?p="+readSurveyCookie("_apr_survey"); } function backSurvey() { history.back(); }
Для просты javascript в CSS файлы были внедрены стили
#SurveyNav { position: fixed; top: 10px; left: 10px; } #SurveyHome { width: 250px; height: 63px; background: url(http://www.example.ru/KEY_HOME2.png); cursor: pointer; } #SurveyBack { width: 250px; height: 65px; background: url(http://www.example.ru/KEY_BACK2.png); cursor: pointer; }
Все круто! Работает!
Грабли №3. Криво поставленный экран терминала.
Как в windows осуществляется скроллинг? Правильно, слайдером. А что если экран поставлен со сдвигом вправо и закрыт металлическом корпусом терминала? Решение есть. Расширение «Grab and Drag». Попробуйте. Я попробовал, теперь даже на рабочем компьютере пользуюсь. Перетаскивание страницы a-la Photoshop отличная фича.
Грабли №4. Баннеры и счетчики на сайте
Пользователи киоска путешествуют по корпоративным сайтам и иногда нажимают на счетчики, баннеры, и другие ссылки которые ведут на сайты, которые не нужно и которые по понятным причинам не были подвергнуты манипуляциям из грабли №2. Таким образом снова теряются навигационные кнопки и все, подключай клавиатуру.
Решение — расширение Leechblock с настройкой, которая запрещает ходить куда то кроме нужных сайтов и в случае нелегального перехода перебрасывает браузер на домашнюю страницу.
Спасибо! Собираюсь внедрить киоски, столкнулся с проблемами выше.
Плюс к этому поставил win 8.1 эмбеддед. Там магические кнопки по верх всего отрисовываются и даже реестром не отключить. И при «оттаскивании» окна можно удивить пуск (нижнюю панель), пусть и не активный. Решением стал .batник. вот код, а-вось кому пригодится…
:: Отключим пути
@ECHO OFF
:: Изменяем кодовую страницу
chcp 1251
:: Выводим меседж
echo "Скрипт работает"
:: kill explorer
taskkill /f /im explorer.exe
:: Run FF
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
:: Run explorer when kiosk mode is deactivated (by pressing alt+F4)
start explorer.exe
:: Close CMD
taskkill /f /im cmd.exe
:: Exit
exit/b 0
В моём случаи получается немного сложнее, но суть передаёт
Здравствуйте Максим! В данный момент бьюсь с R-Kiosk, никак не могу сделать рабочими кнопки навигации, вперёд, назад, домой, перепробовал уже кучу доп кнопок которые предложены аддонами Firefox, но все их блочит R-Kiosk. Подскажите пожалуйста, как воспользоваться вашим кодом, который вы добавили выше, для кнопок навигации.
Внедрить его на сайт, который будет просматриваться киоском. Идея именно в этом.