質問

私は何年も前に構築したIDスキャナーステーションプログラムを再検討しており、ユーザーからシステムビープ音を鳴らすようにリクエストがあります。システムをWebブラウザーに移行することを検討していますが、javascriptなどを介してスピーカービープ音を呼び出すことは可能ですか?クロスブラウザー互換である必要はありませんが、おそらくWindowsまたはLinuxで動作する必要があります。問題のステーションはサウンドカードまたは外部スピーカーを装備していないため、PCスピーカーへのアクセスのリクエストです。

誰かがそれを言うことを知っているので、これについて前もって対処します。ノイズを発生させるアプリケーションについてあなたがどう思うかは気にしません。これはあなたのためではありません。ユーザーはそれを要求します、それは理にかなっており、ハードウェアスキャナーは既にとにかく音を立てます。はい、識別可能なテキストと色で視覚的なフィードバックを提供しますが、肯定的なフィードバックとして既存のビープ音を受け入れ、オーディオコンテキストを追加すると役立つことがわかります。

役に立ちましたか?

解決

JavaScriptを使用することは不可能です-Cookieと新しいHTML5ローカルストレージを除き、JavaScriptはクライアントコンピューターにアクセスできません。

ただし、できることは、JavaScriptで制御できるJavaアプレットを使用することです(非表示にするかどうか)。

こちらの例をご覧ください。

これには、クライアントコンピューターにJavaランタイムをインストールする必要があります。

他のヒント

今日のJavaScriptでは可能です。

こちらはクイック&私が書いた関数...

var beep = function(duration, type, finishedCallback) {

    if (!(window.audioContext || window.webkitAudioContext)) {
        throw Error("Your browser does not support Audio Context.");
    }

    duration = +duration;

    // Only 0-4 are valid types.
    type = (type % 5) || 0;

    if (typeof finishedCallback != "function") {
        finishedCallback = function() {};   
    }

    var ctx = new (window.audioContext || window.webkitAudioContext);
    var osc = ctx.createOscillator();

    osc.type = type;

    osc.connect(ctx.destination);
    osc.noteOn(0);

    setTimeout(function() {
        osc.noteOff(0);
        finishedCallback();
    }, duration);

};

jsFiddle

次の方法を試してください:簡単かもしれません...

function play_beep() {
  var snd = new Audio("http://www.externalharddrive.com/waves/computer/hello.wav");
  snd.play();
  return false;
}
<input type="submit" value="Play Beep" onclick="return play_beep();" />

あなたの最善の策は、仕事をしているJavaアプレットだと思います...

これは、ネイティブJavascriptでは不可能です。ただし、ActiveXコントロールを作成して実行することもできます。

Alexのソリューションは Uncaught TypeError:osc.noteOnは関数ではありません

これでもやった:

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)

ここから選択

時間を節約できることを願っています

正直にこれをテストしていませんが、一見の価値があります

Real Javaのビープ音を出す方法ビープですが、ターゲットとするすべてのマシンに適切なバージョンのJDKがクライアントにインストールされていることを確認できるかどうかに依存します。

実際にはこれは可能ですが、おそらくその間にJavaで実装された新しい関数が原因です。短い例を次に示します。

var context = new AudioContext();
var o = context.createOscillator();
o.type = "sine";
o.connect(context.destination);
o.start();
setTimeout(function(){ 
        o.stop();
}, 100);

詳細については、このサイト https:// marcggをご覧ください。 com / blog / 2016/11/01 / javascript-audio / で解決策を見つけました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top