Je revisite d'un programme de station d'identification de scanner Nous avons construit il y a des âges et j'ai une demande d'utilisateurs à effectuer un bip de système. Nous envisageons de déplacer le système sur un navigateur Web, mais est-il possible d'invoquer un bip de haut-parleur via JavaScript ou quelque chose? Il n'a pas besoin d'être compatible avec le navigateur croisé, mais il doit probablement fonctionner sur Windows ou Linux. Les stations en question sont Je sais que quelqu'un va le dire, alors je vais m'attaquer à cela: je ne me soucie pas de ce que vous pensez des applications faisant du bruit,
8 Réponses :
Ce n'est pas possible avec JavaScript natif. Vous pouvez éventuellement écrire un contrôle ActiveX pour le faire, cependant. P>
Bien que l'OP ait dit que la compatibilité entre navigateur n'est pas un problème, ActiveX n'est certainement pas le meilleur choix si une compatibilité de système croisé (I.e. Cross-OS) doit être envisagée.
@Alan je suis d'accord, bien que les applets me rendent grincheux presque autant que ActiveX le fait.
Je pense que votre meilleur choix serait un applet Java qui fait le travail ... P>
Utilisation JavaScript, il est impossible - JavaScript n'a pas accès à l'ordinateur client, à l'exception des cookies et du nouveau stockage local HTML5. P>
Ce que vous pouvez faire, cependant, utilise une applet Java qui sera contrôlable via JavaScript - caché ou non. p>
Vous pouvez trouver un exemple ici . P>
Ceci nécessite que Java Runtime soit installé sur l'ordinateur client. P>
Je n'ai honnêtement pas testé cela, mais cela mériterait un look, p>
réel Java Comment émettre un Beep Mais cela dépend de vous de pouvoir vous assurer que votre client a une version appropriée du JDK installé sur chaque machine que vous ciblez. P>
Il est possible avec JavaScript aujourd'hui.
Voici une fonction Quick & Sale EM> que j'ai écrit ... p> jsfiddle . p> p>
Donne une erreur non capturature TypeError: osc.Noteon n'est pas une fonction code>
Essayez de remplacer osc.noteon (0); code> avec
osc.start (); code> et
osc.noteoff (0); code> avec
.stop (); code> - essayé sur chrome 92
p> <input type="submit" value="Play Beep" onclick="return play_beep();" />
Solution par Alex m'a donné Ceci l'a fait cependant: p> P> Couvent TypeError: osc.Noteon n'est pas une fonction code>
Play = (function() {
var ctx = new(AudioContext || webkitAudioContext);
return function(duration, freq, finishedCallback) {
duration = +duration;
if (typeof finishedCallback != "function") {
finishedCallback = function() {};
}
var osc = ctx.createOscillator();
osc.type = 0;
osc.connect(ctx.destination);
osc.frequency.value = freq;
if (osc.start) osc.start();
else osc.noteOn(0);
setTimeout(
function() {
if (osc.stop) osc.stop(0);
else osc.noteOff(0);
finishedCallback();
}, duration
);
};
})();
Play(42, 666)
En réalité, cela est possible, probablement dû à de nouvelles fonctions mises en œuvre dans Java dans l'intervalle. Voici un court exemple:
var context = new AudioContext(); var o = context.createOscillator(); o.type = "sine"; o.connect(context.destination); o.start(); setTimeout(function(){ o.stop(); }, 100);
Si cela n'a pas besoin d'être spécifique au navigateur, quel navigateur ciblez-vous?
Tout ce qui fonctionne. Firefox, c'est-à-dire Chrome, Safari (SANS OSX). Je cherchais à Mozilla Prism, mais des commentaires supplémentaires audio sont probablement une priorité plus élevée.
Dupliquer Stackoverflow.com/questions/879152/...
@Raul non ce n'est pas. Celui-ci ne peut pas utiliser la réponse "Duplicate de la question" car les ordinateurs cible n'ont aucune carte audio.