2012-11-27 6 views
0

Я заинтересован в создании веб-сайта, который начинает мигать через всю веб-историю посетителей, когда они посещают. Я планирую использовать JavaScript для захвата истории на компьютере каждого зрителя и анимации через нее с различной скоростью в зависимости от того, сколько у них было. Моя мысль заключалась в использовании history.length, чтобы определить длину истории посетителя, а затем используйте history.go() для навигации по -1, -2, -3 и т. Д. Через всю историю веб-поиска. Я признаю, что время загрузки будет ОГРОМНЫМ, но сейчас я просто пытаюсь продумать эту концепцию. This Связанный вопрос кажется тем, что я использовал бы для основы моего кода, однако, я не понимаю, почему они описывают, что этот метод не сработает. Я студент, который очень новичок в JavaScript.Концепция Javascript с использованием объекта истории

Есть ли у вас какие-либо знания о том, будет ли это работать или какие-либо идеи о способах достижения моей идеи?

+4

Не первая история.back() 'убить ваш скрипт? Вам, вероятно, понадобится сделать это в iframe, хотя я не уверен, что вы можете заставить его работать. –

+5

Да - после того, как вы назовете 'history.go()' ваша страница, а также ее JavaScript, будут выгружены. Я не думаю, что можно загрузить историю страницы в iframe, либо ... возможно, вам стоит попробовать расширение браузера? – gengkev

+0

BTW, Это дубликат: http://stackoverflow.com/questions/1946963/loop-over-history-in-javascript –

ответ

1

Один раз вы можете позвонить по телефону history.go(). Это примерно так, как ты получишь. Причина проста, как только вы на предыдущей странице, ваш javascript исчез. Iframes не будет работать либо из-за того, что вы не можете выполнить свой собственный JS в iframe, у которого есть страница из другого домена. Читайте о same origin policy для получения дополнительной информации.

Единственное реальное решение, о котором я могу думать, - расширение браузера. Причина, по которой это будет работать, объясняется тем, что ваш JS может сохраняться на нескольких сайтах. Вы, вероятно, просто нужно userscript в каждой страницы, что делает следующее:

  • проверить переменную, чтобы увидеть, если включена функция
  • если это, вызовите history.go(-1) после тайм-аута (для управления скоростью)

Я больше всего знакомы с Chrome, так что я воображая browserAction, чтобы включить/отключить сценарий и content script, который делает редирект. Другие возможные варианты включают Greasemonkey (Firefox), Tampermonkey (Chrome), Personalized Web (Chrome) скрипты

+0

Это происходит с тех пор! Я никогда не использовал расширение браузера. Было бы довольно просто, и вы рекомендуете какие-либо ресурсы, чтобы узнать о них больше? Благодаря! – Brannon

+0

Спасибо @gengkev - это ЕГО идея. См. Комментарии выше. –

+0

Для Chrome, http://developer.chrome.com/extensions/getstarted.html - хорошее начало. – sachleen

1

Как указано в вопросе, вы связаны, JavaScript и/или DOM не дает вам доступ ко всей истории браузера, так что будет серьезным нарушением конфиденциальности. Представьте, что вы собираетесь на сайт и сможете узнать на каждом сайте, который вы когда-либо посещали в этом браузере.

Это потенциально дает доступ к сайтам для:

  1. Sessions вы все еще вошли в на других сайтах (если они хранят ключ сеанса в URL, так как некоторые сайты делают)
  2. понимание того, что вид деятельности вы выполняете (вы модератор на сайте X?)
  3. Огромное количество данных о том, что вы заинтересованы в.

Это не то, что органы по стандартизации или просмотреть r производители думали, что пользователи будут заинтересованы в обмене со всеми. Вот почему API не может пройти через всю историю браузера.

@ sachleen уже предоставил очень хороший подробный ответ о том, как вы можете обойти это ограничение для отдельных браузеров, если вы хотите создать это приложение. Ради полноты я просто упомянул ключевой термин: «расширение браузера». :-)

+0

Спасибо, я не хотел быть раздражающим человеком для репоста, я просто хотел больше объяснений. – Brannon

+0

* Chuckles * @Brannon - рад, что я мог бы помочь. Я решил, что вы искали больше объяснений - отсюда ответ :-) –