5554 sujets

Sémantique web et HTML

Bonjour,
J'utilise Discord web et j'avais une question sur leur programmation.
Leurs codes HTML/JS/CSS et autres sont complexifiés... Smiley fache

Quelqu'un saurait-il comment ils font pour mettre une notification sonore lorsqu'un message est reçu sans qu'il y ait les erreurs :
'La lecture automatique n’est autorisée que lorsqu’elle a été approuvée par l’utilisateur, que le site est activé par l’utilisateur, ou que le média est muet.'
'Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.'

Merci ! (Ce n'est pas pour sonoriser une page web, je suis au courant que ce n'est pas très conseillé ! Smiley cligne C'est juste que quand je vois quelque chose je cheche à comprendre comment ça fonctionne ! Smiley smile )
Modifié par js_html (17 Dec 2020 - 12:38)
Si c'était le cas, je comprendrais, mais là, je n'ai pas mis de permissions.
upload/1608217256-81417-discord.png
Et par défaut, mon navigateur bloque les sons.

Du coup, je ne comprend pas ! Smiley hein
Bonjour,
J'utilise Discord web et j'avais une question sur leur programmation.
Leurs codes HTML/JS/CSS et autres sont complexifiés... Smiley fache

Quelqu'un saurait-il comment ils font pour mettre une notification sonore lorsqu'un message est reçu sans qu'il y ait les erreurs :
'La lecture automatique n’est autorisée que lorsqu’elle a été approuvée par l’utilisateur, que le site est activé par l’utilisateur, ou que le média est muet.'
'Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.'

Merci ! (Ce n'est pas pour sonoriser une page web, je suis au courant que ce n'est pas très conseillé ! Smiley cligne C'est juste que quand je vois quelque chose je cherche à comprendre comment ça fonctionne ! Smiley smile )
Pensez-vous qu'ils aient pu faire :
1/ Onmouseover pour avoir la permission
2/ setTimeout pour attendre et que ça ne fasse pas le son tout de suite
3/ clearTimeout à la réception d'un message
4/ play pour jouer l'audio
?
Modérateur
Bonjour,

1) Il suffit d'un clic de l'utilisateur de l'utilisateur (ou probablement d'une navigation clavier) pour qu'il soit possible de lancer la lecture via une balise <audio>.

Je t'ai déjà donné un exemple à https://forum.alsacreations.com/topic-2-87649-1-Resolu-Son-sur-une-page.html

Un mouse over ne suffit probablement pas (il suffit de tester en adaptant le code de l'exemple du lien ci-dessus en remplaçant "click" par "mouseover", puis afficher la page dans un navigateur, puis déplacer la souris au dessus du bouton "start"). Par contre, un mouseover pourra lancer un audio si l'utilisateur a précédemment cliqué quelque part dans la fenêtre du navigateur, même s'il n'y a rien à l'endroit où il a cliqué (il suffit là aussi de tester en cliquant n'importe où avant de déplacer la souris au dessus du bouton "start").

Le simple fait pour un utilisateur de se connecter devrait donc être suffisant pour que le navigateur considère qu'il peut jouer plus tard un audio (sauf si la connexion est automatique).

L'audio peut très probablement être déclenché plus tard suite à l'arrivée d'un "message" pour l'utilisateur, sans nouvelle intervention de cet utilisateur. A priori, Discord utilise les websockets. C'est probablement comme ça qu'un message est envoyé à un moment ou à un autre au navigateur de l'utilisateur, ce qui conduit au déclenchement de l'exécution d'un code js dans le navigateur de l'utilisateur. Comme l'utilisateur est déjà connecté, il a fait au moins une action, et donc la méthode javascript play() pour les éléments audio est utilisable dans le code js se déclenchant à la réception du message.

Ça m'étonnerait qu'il y ait besoin de setTimeout().

2) Les navigateurs ne font pas tous pareils. Et en plus, ils évoluent sur cette question (sinon, ce serait trop simple).

3) S'il est vrai que le code "visible" d'une page Discord est difficile à lire, Discord est par contre copieusement documenté. Voir par exemple : https://discord.com/developers/docs/intro

Mais bon, vu l'énorme volume d'information, ça ne va pas beaucoup t'avancer, sauf si t'as un QI de 300.

Amicalement,
Modifié par parsimonhi (18 Jan 2021 - 02:24)
1) Oui, je l'utilise le clic sur un bouton pour un audio, mais là :
- on se connecte sur une page discord.com/AAA
- ça redirige vers discord.com/BBB
- ça fait un son à la réception d'un message (même si l'on n'a pas cliqué ou appuyé sur une touche du clavier de la page discord.com/BBB)

3) Effectivement, il faut vraiment avoir envie, alors que je suis juste curieux mais pas au point de lire toute la documentation.

Merci !
Modifié par js_html (09 Feb 2021 - 18:38)
Meilleure solution