Je veux que ma page Web émette un signal sonore chaque fois qu'un utilisateur dépasse la limite maximale de caractères de mon site Web. <textarea>
.
Fonctionne bien sur Chrome, mais pas sur Firefox (v 30.0)
Je veux que ma page Web émette un signal sonore chaque fois qu'un utilisateur dépasse la limite maximale de caractères de mon site Web. <textarea>
.
Solution
Vous pouvez maintenant utiliser fichiers en base64 pour produire des sons lorsqu'ils sont importés en tant que données URI . La solution est presque la même que les précédentes, sauf que vous n'avez pas besoin d'importer un fichier audio externe.
function beep() {
var snd = new Audio("data:audio/wav;base64,//uQRAAAAWMSLwUIYAAsYkXgoQwAEaYLWfkWgAI0wWs/ItAAAGDgYtAgAyN+QWaAAihwMWm4G8QQRDiMcCBcH3Cc+CDv/7xA4Tvh9Rz/y8QADBwMWgQAZG/ILNAARQ4GLTcDeIIIhxGOBAuD7hOfBB3/94gcJ3w+o5/5eIAIAAAVwWgQAVQ2ORaIQwEMAJiDg95G4nQL7mQVWI6GwRcfsZAcsKkJvxgxEjzFUgfHoSQ9Qq7KNwqHwuB13MA4a1q/DmBrHgPcmjiGoh//EwC5nGPEmS4RcfkVKOhJf+WOgoxJclFz3kgn//dBA+ya1GhurNn8zb//9NNutNuhz31f////9vt///z+IdAEAAAK4LQIAKobHItEIYCGAExBwe8jcToF9zIKrEdDYIuP2MgOWFSE34wYiR5iqQPj0JIeoVdlG4VD4XA67mAcNa1fhzA1jwHuTRxDUQ//iYBczjHiTJcIuPyKlHQkv/LHQUYkuSi57yQT//uggfZNajQ3Vmz+Zt//+mm3Wm3Q576v////+32///5/EOgAAADVghQAAAAA//uQZAUAB1WI0PZugAAAAAoQwAAAEk3nRd2qAAAAACiDgAAAAAAABCqEEQRLCgwpBGMlJkIz8jKhGvj4k6jzRnqasNKIeoh5gI7BJaC1A1AoNBjJgbyApVS4IDlZgDU5WUAxEKDNmmALHzZp0Fkz1FMTmGFl1FMEyodIavcCAUHDWrKAIA4aa2oCgILEBupZgHvAhEBcZ6joQBxS76AgccrFlczBvKLC0QI2cBoCFvfTDAo7eoOQInqDPBtvrDEZBNYN5xwNwxQRfw8ZQ5wQVLvO8OYU+mHvFLlDh05Mdg7BT6YrRPpCBznMB2r//xKJjyyOh+cImr2/4doscwD6neZjuZR4AgAABYAAAABy1xcdQtxYBYYZdifkUDgzzXaXn98Z0oi9ILU5mBjFANmRwlVJ3/6jYDAmxaiDG3/6xjQQCCKkRb/6kg/wW+kSJ5//rLobkLSiKmqP/0ikJuDaSaSf/6JiLYLEYnW/+kXg1WRVJL/9EmQ1YZIsv/6Qzwy5qk7/+tEU0nkls3/zIUMPKNX/6yZLf+kFgAfgGyLFAUwY//uQZAUABcd5UiNPVXAAAApAAAAAE0VZQKw9ISAAACgAAAAAVQIygIElVrFkBS+Jhi+EAuu+lKAkYUEIsmEAEoMeDmCETMvfSHTGkF5RWH7kz/ESHWPAq/kcCRhqBtMdokPdM7vil7RG98A2sc7zO6ZvTdM7pmOUAZTnJW+NXxqmd41dqJ6mLTXxrPpnV8avaIf5SvL7pndPvPpndJR9Kuu8fePvuiuhorgWjp7Mf/PRjxcFCPDkW31srioCExivv9lcwKEaHsf/7ow2Fl1T/9RkXgEhYElAoCLFtMArxwivDJJ+bR1HTKJdlEoTELCIqgEwVGSQ+hIm0NbK8WXcTEI0UPoa2NbG4y2K00JEWbZavJXkYaqo9CRHS55FcZTjKEk3NKoCYUnSQ0rWxrZbFKbKIhOKPZe1cJKzZSaQrIyULHDZmV5K4xySsDRKWOruanGtjLJXFEmwaIbDLX0hIPBUQPVFVkQkDoUNfSoDgQGKPekoxeGzA4DUvnn4bxzcZrtJyipKfPNy5w+9lnXwgqsiyHNeSVpemw4bWb9psYeq//uQZBoABQt4yMVxYAIAAAkQoAAAHvYpL5m6AAgAACXDAAAAD59jblTirQe9upFsmZbpMudy7Lz1X1DYsxOOSWpfPqNX2WqktK0DMvuGwlbNj44TleLPQ+Gsfb+GOWOKJoIrWb3cIMeeON6lz2umTqMXV8Mj30yWPpjoSa9ujK8SyeJP5y5mOW1D6hvLepeveEAEDo0mgCRClOEgANv3B9a6fikgUSu/DmAMATrGx7nng5p5iimPNZsfQLYB2sDLIkzRKZOHGAaUyDcpFBSLG9MCQALgAIgQs2YunOszLSAyQYPVC2YdGGeHD2dTdJk1pAHGAWDjnkcLKFymS3RQZTInzySoBwMG0QueC3gMsCEYxUqlrcxK6k1LQQcsmyYeQPdC2YfuGPASCBkcVMQQqpVJshui1tkXQJQV0OXGAZMXSOEEBRirXbVRQW7ugq7IM7rPWSZyDlM3IuNEkxzCOJ0ny2ThNkyRai1b6ev//3dzNGzNb//4uAvHT5sURcZCFcuKLhOFs8mLAAEAt4UWAAIABAAAAAB4qbHo0tIjVkUU//uQZAwABfSFz3ZqQAAAAAngwAAAE1HjMp2qAAAAACZDgAAAD5UkTE1UgZEUExqYynN1qZvqIOREEFmBcJQkwdxiFtw0qEOkGYfRDifBui9MQg4QAHAqWtAWHoCxu1Yf4VfWLPIM2mHDFsbQEVGwyqQoQcwnfHeIkNt9YnkiaS1oizycqJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
snd.play();
}
beep();
Compatibilité
L'URI de données est supporté par presque tous les navigateurs maintenant. Plus d'informations sur http://caniuse.com/datauri
Démo
Outil de conversion
Et c'est ici que vous pouvez convertir des fichiers mp3 ou wav au format Data URI :
Si je colle ce texte comme extrait dans les outils de développement de Chrome, il fonctionne la première fois que je l'exécute. Mais les exécutions suivantes échouent.
Ce n'est pas possible de le faire directement en JavaScript. Vous devrez intégrer un court fichier WAV dans le HTML, puis le lire via le code.
Un exemple :
<script>
function PlaySound(soundObj) {
var sound = document.getElementById(soundObj);
sound.Play();
}
</script>
<embed src="success.wav" autostart="false" width="0" height="0" id="sound1"
enablejavascript="true">
Vous l'appelleriez alors à partir du code JavaScript comme tel :
PlaySound("sound1");
Cela devrait faire exactement ce que vous voulez - vous aurez juste besoin de trouver/créer le bip sonore vous-même, ce qui devrait être trivial.
Note : Bien que j'aie donné la réponse directe, je pense que Mark Hurd donne un conseil judicieux pour ne pas ennuyer l'utilisateur.
Il se peut également que vous rencontriez des problèmes de compatibilité avec les navigateurs avec ce style de lecture du son. Il est difficile de diffuser du son à partir d'un navigateur d'une manière compatible avec tous les navigateurs !
Il n'est pas possible d'avoir accès au haut-parleur du PC ? (d'où l'on entend les bips du BIOS)
J'ai écrit une fonction pour faire un bip avec la nouvelle API Audio.
var beep = (function () {
var ctxClass = window.audioContext ||window.AudioContext || window.AudioContext || window.webkitAudioContext
var ctx = new ctxClass();
return function (duration, type, finishedCallback) {
duration = +duration;
// Only 0-4 are valid types.
type = (type % 5) || 0;
if (typeof finishedCallback != "function") {
finishedCallback = function () {};
}
var osc = ctx.createOscillator();
osc.type = type;
//osc.type = "sine";
osc.connect(ctx.destination);
if (osc.noteOn) osc.noteOn(0); // old browsers
if (osc.start) osc.start(); // new browsers
setTimeout(function () {
if (osc.noteOff) osc.noteOff(0); // old browsers
if (osc.stop) osc.stop(); // new browsers
finishedCallback();
}, duration);
};
})();
jsFiddle .
Malheureusement, ce code ne peut pas être exécuté deux fois sous Chrome :( L'exception "ressources audio indisponibles pour la construction de l'AudioContext" a été levée.
La durée est considérée comme NaN si elle n'est pas fournie. De plus, pourquoi ne pas simplement utiliser "beep : function(duration, type, finishedCallback)" ? A part ça, ça fonctionne bien, merci.
Comme nous le lisons dans cette réponse Le HTML5 résoudra ce problème pour vous si vous êtes ouvert à cette voie. L'audio HTML5 est pris en charge dans tous les navigateurs modernes .
Voici une copie de l'exemple :
var snd = new Audio("file.wav"); // buffers automatically when created
snd.play();
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
34 votes
Ewwwww n'émet pas de sons, utilise un indice visuel comme un texte ou un fond rouge ou autre. C'est moins ennuyeux pour l'utilisateur, plus susceptible d'être efficace (puisque de nombreux utilisateurs n'ont pas de haut-parleurs au travail, ou le son est coupé, etc.
0 votes
Une sorte de doublon
20 votes
Pourquoi ne pas utiliser <blink> avec un message d'avertissement à la place ?
1 votes
Dupe : stackoverflow.com/questions/187098/
19 votes
Que se passe-t-il si la personne tape à partir d'une autre page et ne regarde pas l'écran ? Elle ne verra pas le repère visuel et continuera à taper. Elle a besoin d'un signal sonore pour s'arrêter.
114 votes
Pour ceux qui se demandent pourquoi vous faites cela... dans les environnements d'entreprise, il est courant qu'un utilisateur tape au clavier en aveugle (c'est-à-dire sans regarder l'écran). Des signaux audio discrets peuvent faciliter la saisie rapide de données au clavier uniquement.
115 votes
Beaucoup de développeurs de niveau moyen (ou de niveau inférieur) ici font des généralisations excessives. Oui, il est généralement mal vu de lire de l'audio. Cependant, il y a certainement des cas d'utilisation de production parfaitement corrects pour cela. Si quelqu'un n'a pas écrit assez d'applications pour en apprécier le besoin, il devrait dire qu'il n'a pas rencontré de besoin valide, et non pas dire aux autres que ce n'est jamais approprié pour les applications de production juste parce qu'il n'a pas rencontré ce besoin dans sa vaste expérience, pourtant prouvée inadéquate.
14 votes
Je déteste les commentaires comme celui que Daniel a écrit... Je ne trouve pas d'endroit dans la question de l'OP où il demande votre opinion mon pote. Peut-être qu'il demande ça parce que l'utilisateur ne regarde même pas l'écran. C'est un problème que j'ai en ce moment. L'utilisateur doit scanner des trucs. Il ne regarde JAMAIS l'écran, donc un avertissement visuel rouge en cas d'erreur ne servira à rien... J'ai besoin d'un signal sonore. Quand quelqu'un pose une question, gardez votre opinion pour vous. Répondez simplement à la question. Si vous ne savez pas comment répondre à la question, alors fermez-la et laissez quelqu'un d'autre y répondre... Merci.
0 votes
Et me voilà en 2020, à essayer d'éviter les doigts gluants de chaque page web me demandant la permission d'envoyer des notifications. Les signaux audio sont un excellent moyen d'avertir les utilisateurs qui font autre chose qu'ils devraient faire ceci. Malheureusement pour moi, chaque page web pense que je devrais les faire. J'en suis presque flatté.
2 votes
N'écoutez pas tous ces crapules, j'en ai besoin pour me créer un petit métronome sonore pour un exercice de musique. Quand les gens commencent à douter de votre question parce qu'ils ne peuvent pas imaginer un contexte, c'est votre signe.