Внедрение Javascript на страницу - PullRequest
1 голос
/ 08 апреля 2009

Я пишу веб-игру, в которой нужно нажимать на ссылки на различных сайтах в Интернете. Я знаю, это звучит странно, но основная предпосылка заключается в том, что вы начинаете на моей странице, где вы нажимаете ссылку на какую-то страницу на другом сайте. Вы продолжаете переходить по ссылкам, пока не дойдете до страницы, которую пытаетесь открыть. Вспомните WikipediaGame.org. Разница в том, что я не контролирую реальные страницы со ссылками.

Что мне нужно сделать, это отслеживать все ссылки, по которым они нажимали, и когда они попадают на последнюю страницу, я хочу отправить их обратно на мой сайт (или что-то в этом роде).

Я думал о том, что, возможно, я смогу каким-то образом перехватить запросы страниц и добавить Javascript для отслеживания ссылок, по которым они нажимали. Это возможно? Кто-нибудь сделал что-нибудь подобное? Очевидно, это может представлять угрозу безопасности. У меня есть другие варианты? Я не хочу, чтобы пользователь собирал список всех ссылок, а затем размещал их в текстовом поле на моем сайте.

Ответы [ 6 ]

1 голос
/ 08 апреля 2009

Может быть, букмарклет для отправки текущей страницы на ваш сайт? Таким образом, пользователь получит полный контроль над списком ссылок с минимальным объемом работы.

0 голосов
/ 09 апреля 2009

Так что я понял, что делать. Я использую iframe, как это:

<iframe src="Puzzle/ContinuePuzzle" />

Он указывает источник на мой контроллер Mvc. В моем контроллере я делаю WebRequest для фактического URL, который я хочу, а затем анализирую HTML и вставляю свой собственный javascript на страницу. Страница действует и выглядит как другой сайт, но на самом деле она с моего сайта.

0 голосов
/ 08 апреля 2009

Я не уверен, что вы можете сделать это так, как вы себе представляете. Не написав плагин для браузера, я бы посмотрел, что делают сайты вроде KeepVid. Они позволяют вам создать закладку на панели инструментов, и URL-адрес закладки такой:

JavaScript: document.location = 'http://keepvid.com/?url='+escape(window.location);

Это, по сути, передает URL-адрес, в котором находится пользователь, в keepvid. Если вы используете эту концепцию, вы можете попросить своего пользователя нажать кнопку закладки, чтобы зарегистрировать этот URL-адрес, и вы можете собрать его и передать пользователю туда, где он был.

0 голосов
/ 08 апреля 2009

Я не знаю, как вы внедрили бы JavaScript в чужие страницы, которые затем отправляли бы вам сообщения. Это на самом деле звучит так, как будто бы это сделал вирус.

Я думаю, что вы могли бы сделать что-то вроде того, что вы хотите, используя iframe.
Простой способ заключается в том, чтобы включить предустановку iframe для загрузки «стартового» местоположения на вашем сайте, а затем добавить кнопку на внешней странице, чтобы пользователь мог опубликовать свое текущее местоположение (в iframe).

Когда кнопка на вашей странице нажата, вы можете запросить текущее состояние iframe…
Ссылки на окно, сгенерированное iframe, и на документ, загруженный в iframe, можно получить через массив frames с помощью атрибута name.

 window.frames[iframeName]  <br/>
 window.frames[iframeName].document  <br/>

Метод ссылки на массив frames имеет широкую поддержку, даже среди довольно старых браузеров, если вы присоединяете атрибут name к iframe. Для достижения наилучших результатов используйте как имя, так и идентификатор.

Для более современных браузеров на документ внутри iframe также можно ссылаться через свойства contentWindow (IE win) и contentDocument (DOM) элемента iframe:

// IE5.5+ windows
document.getElementById(iframeId).contentWindow
document.getElementById(iframeId).contentWindow.document
or,
// DOM 
document.getElementById(iframeId).contentDocument

РЕДАКТИРОВАТЬ: Как показано в комментариях ниже, похоже, что большинство браузеров не позволяют использовать таким образом iframe. Вы можете запустить окно в любом месте, где хотите, но вам не разрешено общаться с ним, если оно не в том же домене. Я полагаю, вы могли бы создать сценарий «Человек посередине», где вы сначала проходите весь трафик через свой сервер, но это не очень практично.

Вот хороший пример того, как jQuery управляет iframe

http://wwwendt.de/tech/dynatree/doc/sample-iframe.html

Надеюсь, это поможет.

0 голосов
/ 08 апреля 2009

Вы не можете сделать это, используя только javascript. Вам нужно написать плагин для Firefox или скрипт GM.

0 голосов
/ 08 апреля 2009

Чтобы сделать этот кросс-браузер совместимым - я не уверен, есть ли способ без написания плагина для каждого браузера. Но я тоже могу ошибаться: -)

Вы можете попытаться создать букмарклет (Javascript, который запускается, когда пользователь нажимает на определенную закладку), но он не будет запускаться автоматически на каждой странице, которую пользователь загружает; пользователь должен будет щелкнуть по нему, чтобы запустить его.

Если вы хотите просто поддерживать Firefox, вы можете написать скрипт Greasmonkey, который будет запускаться на каждой странице / сайте. Но это ограничит область ваших пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...