11
votes

PC SPEAIL BIEP via JavaScript?

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 non équipées d'une carte sonores ou de haut-parleurs externes , d'où la demande d'accès à un haut-parleur PC.

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, ce n'est pas pour vous . Les utilisateurs le demandent, c'est un sens, et le scanner matériel fait déjà du bruit de toute façon. Oui, nous donnons des commentaires visuels, avec un texte et une couleur distinctes, mais nous constatons que les personnes acceptent le bip existant comme des commentaires positifs et en ajoutant davantage de contexte audio.


4 commentaires

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.


8 Réponses :


1
votes

Ce n'est pas possible avec JavaScript natif. Vous pouvez éventuellement écrire un contrôle ActiveX pour le faire, cependant.


2 commentaires

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.



2
votes

Je pense que votre meilleur choix serait un applet Java qui fait le travail ...


0 commentaires

9
votes

Utilisation JavaScript, il est impossible - JavaScript n'a pas accès à l'ordinateur client, à l'exception des cookies et du nouveau stockage local HTML5.

Ce que vous pouvez faire, cependant, utilise une applet Java qui sera contrôlable via JavaScript - caché ou non.

Vous pouvez trouver un exemple ici .

Ceci nécessite que Java Runtime soit installé sur l'ordinateur client.


0 commentaires

0
votes

Je n'ai honnêtement pas testé cela, mais cela mériterait un look,

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.


0 commentaires

5
votes

Il est possible avec JavaScript aujourd'hui.

Voici une fonction Quick & Sale que j'ai écrit ... xxx

jsfiddle .


2 commentaires

Donne une erreur non capturature TypeError: osc.Noteon n'est pas une fonction


Essayez de remplacer osc.noteon (0); avec osc.start (); et osc.noteoff (0); avec .stop (); - essayé sur chrome 92



3
votes

Essayez de suivre la manière suivante: strong> Cela peut facilement pour vous ....

p>

<input type="submit" value="Play Beep" onclick="return play_beep();" />


0 commentaires

1
votes

Solution par Alex m'a donné Couvent TypeError: osc.Noteon n'est pas une fonction code>

Ceci l'a fait cependant: p>

P>

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)


0 commentaires

0
votes

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);


0 commentaires