Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rejestracja aktywności strony w iframe
Forum PHP.pl > Inne > Hydepark
nospor
Hej,
w jaki sposób najlepiej rejestrować aktywność strony w IFRAME? Użytkownikowi po wejsciu do serwisu pojawi się jakaś strona w IFRAME. Interesuje mnie wykrycie, że użytkownik przechodzi na jakieś podstrony w tej stronie.

Do głowy mi na chwilę obecną przychodzi jedynie, to podpięcie sie przy pomocy js, do linków na tej wewnerznej stronie i gdy ten kliknie to jakiś event do mnie. Da się tak? A może jakieś inne rozwiązanie?
Crozin
Jeżeli masz kontrolę nad stroną z ramką i stroną w ramce to zainteresuj się postMessage: https://developer.mozilla.org/en-US/docs/We...dow.postMessage
nospor
No raczej mogę nie mieć kontroli nad stroną w ramce. Chodzi mi w zasadzie tylko o wykrycie, czy użytkownik przemieszcza się po tej stronie, klikając na podstrony
Crozin
Możesz spróbować w ten sposób: http://jsfiddle.net/asay9g2y/ - ale z tego co pamiętam ze względów bezpieczeństwa adresu URL nie wyciągniesz.
com
może tak jak to robią reklamy, czyli event na ramkę i po tym wykryć że jest jakaś interakcja, chyba że potrzebujesz odczyt z konkretnych podstron to nwm, a tak wgl zależy do czego to potrzebujesz bo zawsze te stronę możesz podpiąć pod analytics jeśli chodzi o jakieś statystyki
nospor
@Crozin, hm, jest to jakieś rozwiązanie. Jesli będzie chodziło tylko o reakcję na wczytanie strony, może działać ciekawie smile.gif
ALe pewnie na załadowanie treści ajaxem już nie zareaguje. Trzeba by tu się próbować podpiąć pod linki chyba.

@com nie, nie chodzi o statystyki. CHodzi o wykrycie ruchu uzytkownika i przygotowanie odpowiednich rzeczy na ten ruch: jakis alert, pytanie itp.
com
no to kwestia nadania userowi jakiegoś identyfikatora i logowanie każdego wywołania danej podstrony, powiązane z tym identyfikatorem?
nospor
@com jak zapisywać dane to ja wiem, to nie problem. Chodziło mi w jaki sposób wykryć jego aktywnośc na stronie w ramce smile.gif
trueblue
Cytat(nospor @ 8.01.2015, 15:45:56 ) *
ALe pewnie na załadowanie treści ajaxem już nie zareaguje.


https://developer.mozilla.org/en-US/docs/We...Mutation_events
com
nie zrozumieliśmy się, masz te ramke, w ramce masz podstrony ładowane tym ajaxem wiec każde nowe żądanie do serwera po prostu zapiszesz do pliku bazy whatever powiązując je jednocześnie z naszym id użytkownika i na tej podstawie wiesz co ten ktoś klika, a z tymi danymi robisz już co zechcesz. A to że wiesz jak zapisać dane to ja wiem doskonale.
nospor
@com ale strona w ramce nie bedzie moja. Tym bardziej nie będę miał dostepu do jej serwera smile.gif
com
okej, tego nie wiozłem pod uwagę, no to w tym wypadku to tak się nie da to fakt smile.gif
tzm
Jestes w stanie wykryc klikanie w cialo frame wiec na tej podstawie mozesz okreslic ze z niej korzysta i mierzyc aktywnosc. Co prawda watpie bys przeskoczyl aktywnosc na danej podstronie w tej ramce to bys juz musial ajaxa zaprzegac i przesylac z innej strony dane do siebie ale tak to nie ma problemu. Nadanie ramce klasy active niech Ci startuje licznik, klikniecie poza nia go zatrzymuje. Czy pokazac na przykladzie?
Kloc
Tylko się nie śmiać biggrin.gif

  1. <?Php
  2.  
  3. function funkcja($zmienna){
  4. echo $zmienna;
  5. }
  6.  
  7. $zrodlo = file_get_contents('http://forum.php.pl/');
  8. funkcja($zrodlo);
  9.  
  10. ?>


W funkcji sobie zamieniasz linki dodając do nich event i masz swój efekt biggrin.gif
Później tylko załadować to w diva-swoją ramke.
nospor
@tzm W sumie też dobry pomysł. Nie, nie musisz podawac przykladu smile.gif

@kloc do linkow to ja sie dobiore tez w js. A w Twoim sposobie już sie nie dobiore do kodu podstron, chyba zeby ajaxem słać po podstrony i takie tam. Ogólnie nastreczyłoby to paru problemów
Kloc
Cytat(tzm @ 10.01.2015, 18:06:18 ) *
...Czy pokazac na przykladzie?


Chętnie bym zobaczył smile.gif, jak to dla Ciebie nie problem.
com
tzm napisałem dokładnie to samo, tylko nie doprecyzowałem tego tak dobrze jak Ty wink.gif

Cytat
(..) czyli event na ramkę i po tym wykryć że jest jakaś interakcja
tzm
Cytat(Kloc @ 10.01.2015, 18:42:50 ) *
Chętnie bym zobaczył smile.gif, jak to dla Ciebie nie problem.


  1. <div id="body">
  2. <p>kliknij se tu dla testu</p>
  3. <div id="activity"></div>
  4. <iframe id="phppl" src="http://forum.php.pl/Zobacz_profil_m85157.html"></iframe>
  5. </div>
  6. var activityMonitor = {
  7. iframeActive : false,
  8. timerCheck : false,
  9. timer : 0
  10. };
  11. window.addEventListener('blur',function(){
  12. if(activityMonitor.iframeActive == true && activityMonitor.timerCheck == false){
  13. activityMonitor.timerCheck = true;
  14. inter = setInterval(function(){
  15. activityMonitor.timer ++;
  16. document.getElementById('activity').innerText = activityMonitor.timer;
  17. },1000);
  18. }
  19. });
  20. document.getElementById('body').addEventListener('click',function(){
  21. activityMonitor.iframeActive = false;
  22. activityMonitor.timerCheck = false;
  23. clearInterval(inter);
  24. });
  25. document.getElementById('phppl').addEventListener('mouseover',function(){
  26. activityMonitor.iframeActive = true;
  27. });


osadzic w html,body i dziala. nie wiem jak z urzadzeniami mobilnymi bo nie mam gdzie potestowac. do activityMonitor.timer wypadaloby napisac monitor albo cos zeby podawac czas a nie inta ale juz mi sie nie chce dla przykladow pisac calosci.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.