Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]<audio> - zliczanie odtworzenia
bahh
post
Post #1





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


Witam, wykorzystuje znacznik HTML5 <audio> w następujący sposób:
  1. <audio controls>
  2. <source src="muza.mp3" type="audio/mpeg">
  3. Twoja przeglądarka nie obsługuje odtwarzacza
  4. </audio>


Chcę zliczać każde odtworzenie (przyciśnięcie play - bez przypadku pauzy). Jest to możliwe przy użyciu JavaScript i Ajaxa? Nie wiem czy da się taki efekt uzyskać, dlatego piszę do was. Jak bym miał zliczyć takie odtworzenie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zliczaj po stronie serwera.
Go to the top of the page
+Quote Post
bahh
post
Post #3





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


No dobrze, moge w ten sposob okreslic ile razy plik zostal pobrany do odtwarzacza ale nie okresle kto dokladnie i kiedy to wlaczyl. Jak mialbym to zrobic?
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie do końca, bo:
<audio controls preload="none">

Albo:
https://developer.mozilla.org/en-US/docs/We...ts/Media_events
Go to the top of the page
+Quote Post
bahh
post
Post #5





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


Drugi link to rozwiązanie działające na Mozilli, z resztą przeglądarek nic nie wiadomo.

Prosto mówiąc - użytkownik po zalogowaniu ma jakieś id w zmiennej PHP ($user->id) gdzie jeśli kliknie PLAY na odtwarzaczu to ma zliczyć to działanie i zapisać do bazy danych (w tym przypadku będzie potrzebny Ajax) - czyli jeśli dana akcja będzie to żeby wysłało żądanie Ajaxem do pliku zlicz.php?idusera=21

To przykładowy skrypt Ajaxa jakiego użyję - na dole jest wywołanie. Jak więc skutecznie zrobić warunek do wywołania (if) żeby na każdej przeglądarce przeszło to zliczenie jeśli ktoś odtworzy ten plik?
[JAVASCRIPT] pobierz, plaintext
  1. function ajax( options ) {
  2. options = {
  3. type: options.type || "POST",
  4. url: options.url || "",
  5. onComplete: options.onComplete || function(){},
  6. onError: options.onError || function(){},
  7. onSuccess: options.onSuccess || function(){},
  8. dataType: options.dataType || "text"
  9. };
  10.  
  11. var xml = new XMLHttpRequest();
  12. xml.open(options.type, options.url, true);
  13.  
  14. xml.onreadystatechange = function(){
  15. if ( xml.readyState == 4) {
  16. if ( httpSuccess( xml ) ) {
  17. var returnData = (options.dataType=="xml")? xml.responseXML : xml.responseText
  18. options.onSuccess( returnData );
  19. } else {
  20. options.onError();
  21. }
  22. options.onComplete();
  23. xml = null;
  24. }
  25. };
  26.  
  27. xml.send();
  28.  
  29. function httpSuccess(r) {
  30. try {
  31. return ( r.status >= 200 && r.status < 300 || r.status == 304 || navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined")
  32. } catch(e) {
  33. return false;
  34. }
  35. }
  36. }
  37.  
  38. ajax( {
  39. type: "GET",
  40. url: "zlicz.php?idusera=21",
  41. onError: function(msg) {
  42. console.warn(msg)
  43. },
  44. onSuccess: function(msg) {
  45. console.log(msg);
  46. }
  47. });
[JAVASCRIPT] pobierz, plaintext



Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://www.w3schools.com/tags/av_event_playing.asp

Możesz też ukryć standardowe kontrolki i utworzyć własny przycisk play i tam wywoływać ajax.
Go to the top of the page
+Quote Post
bahh
post
Post #7





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

Ostrzeżenie: (0%)
-----


Dokładnie o to mi chodziło, dzięki trueblue
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 16:02