Как отследить пользователя в фрейме - PullRequest
3 голосов
/ 15 декабря 2009

Я хочу отслеживать, что происходит внутри iframe, когда пользователь нажимает на ссылки в IFrame. Страница, которая содержит iframe (родитель), предназначена для отслеживания навигации пользователя по странице в iframe. Обе страницы будут размещены в одном домене верхнего уровня, хотя субдомены будут отличаться.

Мне нужно, чтобы родительская страница была уведомлена о каждом клике, но у меня нет прямого контроля над страницами, которые я загружаю в iframe.

Возможно ли добавить onclick для всех ссылок, когда страница в iframe загружена? Как мне это сделать?

Это будет "шаблон" для сборки:

<html>
 <script language="javascript">
     var currentURL;
 </script>
 <body>
     <iframe id="container" width="500" height="500" src="http://subdomain.parentdomain.com"/>
 </body>

Ответы [ 4 ]

3 голосов
/ 15 декабря 2009

Iframe CrossDomain доступ должен быть тем же доменом, поддоменом и портом.

Если вы располагаете их в одном домене, вы можете связать обработчики событий кликов со всеми ссылками, а затем, когда они нажимаются, регистрировать клики по чему-то вроде Google Analytics, вашей базы данных и т. Д.

1 голос
/ 15 декабря 2009

У меня нет прямого контроля над страницами, которые я загружаю в iframe

Это ваш блокатор. Если вы можете дополнить код на удаленных страницах, вы можете использовать postMessage и взломать идентификатор фрагмента iframe, чтобы получить покрытие браузера. К счастью, кто-то уже сделал грязную работу за вас:

0 голосов
/ 15 декабря 2009

Я собираюсь использовать AJAX-Proxy для того, чтобы контент (в отношении браузера) приходил из моего домена. Это решит все проблемы междоменных сценариев, упомянутые CodeJoust. Скорость доставки может быть проблемой из-за накладных расходов, которые я буду генерировать, но это нужно будет увидеть.

Я, вероятно, буду двигаться в соответствии с вопросом Stackoverflow:

«Применить« onclick »ко всем элементам в iFrame»

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

0 голосов
/ 15 декабря 2009

С jQuery это было бы легко.

$(document).ready(function(){
   var iframeWindow = $('#container')[0].contentWindow;
   $(iframeWindow).load(function(){
       $(this).find('a').click(top.myClickHandler);
   });
}

function myClickHandler(){
    /* Do something */
}
...