Javascript kullanarak sesli bildirimleri mi oynuyorsunuz?


86

Bunu nasıl yapabilirim, böylece bir kullanıcı bir bağlantıyı tıkladığında ses çalarız? Burada javascript ve jquery kullanılıyor.


2
Ses kontrolü için bir jQ eklentisi yazdım soundplay.nikolavukovic.net63.net , sorduğunuz şeyi destekliyor ve daha fazlası, dokümanlar JavaScript koduyla birlikte geliyor, kontrol edin.
genel geçersiz kılma

Şunları yapabilirsiniz Bir sayfa ses efektleri demet ile doldurmak çalma listesi (lar) (örneğin) .load(), .play()API kullanarak anahtar anlarda onları.
genel geçersiz kılma

1
Kutsal olan her şeyin sevgisi için, sessiz bir seçenek ekleyin. Sesli bağlantılar, bir kullanıcının sitenize asla geri dönmemesini sağlamanın en hızlı yollarından biridir.
Wobbles

Yanıtlar:



25

<audio>Sayfanıza bir öğe ekleyin.
Ses öğenizi alın ve play()yöntemi çağırın :

document.getElementById('yourAudioTag').play();

Şu örneğe bakın: http://www.storiesinflight.com/html5/audio.html

Bu site aşağıdaki gibi yapabileceğiniz diğer serin bazı şeyleri ortaya çıkarır load(), pause()ve ses elemanın birkaç diğer özellikleri.

Bu ses öğesini tam olarak ne zaman çalmak istediğiniz size kalmış. Düğmenin metnini okuyun ve isterseniz "hayır" ile karşılaştırın.

Alternatif olarak

http://www.schillmania.com/projects/soundmanager2/

SoundManager 2, sesin IE 6+ dahil herhangi bir modern tarayıcıda çalınmasına izin veren kullanımı kolay bir API sağlar. Tarayıcı HTML5'i desteklemiyorsa, flash'tan yardım alır. Kesin bir şekilde HTML5 istiyorsanız ve flash istemiyorsanız, bunun için bir ayar var, tercihFlash = false

İPad, iPhone (iOS4) ve diğer HTML5 özellikli cihazlar + tarayıcılarda% 100 Flash'sız sesi destekler

Kullanım şu kadar basittir:

<script src="soundmanager2.js"></script>
<script>
// where to find flash SWFs, if needed...
soundManager.url = '/path/to/swf-files/';

soundManager.onready(function() {
    soundManager.createSound({
        id: 'mySound',
        url: '/path/to/an.mp3'
    });

    // ...and play it
    soundManager.play('mySound');
});

İşte uygulamalı bir demosu: http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/


21

Böyle bir şey buldum:

//javascript:
function playSound( url ){   
  document.getElementById("sound").innerHTML="<embed src='"+url+"' hidden=true autostart=true loop=false>";
} 

5
Bu yavaşlamaktır. Windows tarayıcılarla oynamak neredeyse bir saniye
sürüyor

@Codeglot uygulamaya bağlıdır. 1 Saniye gereksinimlerimi karşılar.
Muhd

1
Ayrıca, gecikmeden kurtulmak için muhtemelen bir şekilde önceden yükleyebilirsiniz.
Muhd

9
Gecikme, DOM ayrıştırmasından, ardından dosyanın yüklenmesinden ve başlatılmasından kaynaklanır. Önceden yüklerseniz, gerektiğinde başlatabilirsiniz .
Xeoncross

Fare düşürme olayından 1 saniye sonra uzun bir süre. Çok uzun.
TARKUS

12

Html5 ses etiketi ve jquery kullanarak:

// appending HTML5 Audio Tag in HTML Body
$('<audio id="chatAudio">
    <source src="notify.ogg" type="audio/ogg">
    <source src="notify.mp3" type="audio/mpeg">
</audio>').appendTo('body');

// play sound
$('#chatAudio')[0].play();

Kod buradan .

Uygulamamda, jquery append olmadan sesi doğrudan HTML'ye ekledim.


2
Referans olması için, başarı işleyicisinde ajax işlevinden (sayfa yüklemede çalışan) ses çalıyorum ve şu hatayı alıyorum: Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document firstChrome Version 70.0.3538.102 (Official Build) (64-bit)... burada çözüm gibi görünüyor: stackoverflow.com/a/52821721
user1063287



3

Web Audio API ile bunu yapabilen küçük bir işlev yazdım ...

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

};


1

Aşağıdaki kod, yalnızca javascript kullanarak bir web sayfasında ses çalmanıza yardımcı olabilir. Daha fazla ayrıntıyı http://sourcecodemania.com/playing-sound-javascript-flash-player/ adresinde görebilirsiniz.

<script>
function getPlayer(pid) {
    var obj = document.getElementById(pid);
    if (obj.doPlay) return obj;
    for(i=0; i<obj.childNodes.length; i++) {
        var child = obj.childNodes[i];
        if (child.tagName == "EMBED") return child;
    }
}
function doPlay(fname) {
    var player=getPlayer("audio1");
    player.play(fname);
}
function doStop() {
    var player=getPlayer("audio1");
    player.doStop();
}
</script>

<form>
<input type="button" value="Play Sound" onClick="doPlay('texi.wav')">
<a href="#" onClick="doPlay('texi.wav')">[Play]</a>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    width="40"
    height="40"
    id="audio1"
    align="middle">
    <embed src="wavplayer.swf?h=20&w=20"
        bgcolor="#ffffff"
        width="40"
        height="40"
        allowScriptAccess="always"
        type="application/x-shockwave-flash"
        pluginspage="http://www.macromedia.com/go/getflashplayer"
    />
</object>

<input type="button" value="Stop Sound" onClick="doStop()">
</form>

0

İlk önce, bir kullanıcı olarak bundan hoşlanmam.

Bunu yapmanın en iyi yolu muhtemelen sesinizi arka planda çalan küçük bir flaş uygulaması kullanmaktır.

Burada ayrıca yanıt verildi: Javascript'ten ses çalmanın çapraz platform, çapraz tarayıcı yolu?


3
Kullanıcı bir sesin çalınacağını biliyorsa bunun nesi kötü?
lc.

3
Kullanışlı, yeni siparişler geldiğinde kullanıcının bir bip alarmına ihtiyacı olursa ne olacak? belki de kullanıcılar sürekli ekranda gözle görünmüyor, belki de
işemeye ihtiyacım var ve BEEP'i açıyorum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.