Звуковой сигнал ПК через javascript?
Я пересматриваю программу ID-сканера, которую мы создали много лет назад, и у меня есть запрос от пользователей, чтобы сделать системный звуковой сигнал. Мы рассматриваем возможность перемещения системы в веб-браузер, но можно ли вызывать звуковой сигнал динамика через javascript или что-то в этом роде? Он не должен быть совместим с кросс-браузером, но, вероятно, он должен работать в Windows или Linux. В рассматриваемых станциях отсутствует звуковая карта или внешние громкоговорители, следовательно, запрос на доступ к динамику ПК.
Я знаю, кто-то собирается это сказать, поэтому я рассмотрю этот вопрос: мне все равно, что вы думаете о приложениях, создающих шум, это не для вас. Пользователи запрашивают его, это имеет смысл, и аппаратный сканер уже все равно шумит. Да, мы даем визуальную обратную связь с различимым текстом и цветом, но мы обнаруживаем, что люди принимают существующий звуковой сигнал в качестве положительной обратной связи, и добавление большего контекста аудио поможет.
Ответы
Ответ 1
Использование JavaScript невозможно - JavaScript не имеет доступа к клиентскому компьютеру, кроме файлов cookie и нового хранилища HTML5.
Однако вы можете использовать апплет Java, который будет управляться с помощью JavaScript - скрытый или нет.
Здесь вы можете найти здесь.
Для этого требуется установка времени выполнения Java на клиентском компьютере.
Ответ 2
Это возможно с помощью 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.
Ответ 3
Попробуйте следующее: Это может легко для вас....
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();" />
Ответ 4
Я думаю, ваш лучший выбор - это апплет java, выполняющий эту работу...
Ответ 5
Это невозможно с помощью встроенного Javascript. Возможно, вы могли бы написать элемент управления ActiveX, чтобы сделать это.
Ответ 6
Решение от Alex дало мне Uncaught TypeError: osc.noteOn is not a function
Это сделало это:
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)
Ответ 7
Я честно не тестировал это, но стоило бы посмотреть,
Реальная Java, как испускать звуковой сигнал, но это зависит от того, насколько вы можете убедитесь, что у вашего клиента есть соответствующая версия JDK, установленная на каждом компьютере, на который вы нацеливаетесь.
Ответ 8
На самом деле это возможно, возможно, благодаря новым функциям, реализованным в 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/, где я нашел решение.