Phát thông báo âm thanh bằng Javascript?


86

Làm cách nào tôi có thể làm điều đó, vì vậy bất cứ khi nào người dùng nhấp vào liên kết, chúng tôi sẽ phát âm thanh? Sử dụng javascript và jquery tại đây.


2
Tôi đã viết một plugin jQ cho điều khiển âm thanh soundplay.nikolavukovic.net63.net , nó hỗ trợ những gì bạn yêu cầu và hơn thế nữa, các tài liệu đi kèm với mã JavaScript, hãy kiểm tra.
ghi đè công khai

Bạn có thể (ví dụ) playlist populate (s) với một loạt các hiệu ứng âm thanh và trang .load(), .play()chúng trong những khoảnh khắc quan trọng bằng cách sử dụng api.
ghi đè công khai

1
Đối với tình yêu của vạn vật thánh thiện, hãy bao gồm tùy chọn tắt tiếng. Liên kết có âm thanh là một trong những cách nhanh nhất để đảm bảo người dùng không bao giờ quay lại trang web của bạn.
Wobbles

Câu trả lời:



25

Đặt một <audio>phần tử trên trang của bạn.
Lấy phần tử âm thanh của bạn và gọi play()phương thức:

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

Kiểm tra ví dụ này: http://www.storiesinflight.com/html5/audio.html

Trang web này phát hiện ra một số điều thú vị khác bạn có thể làm như load(), pause()và một vài thuộc tính khác của các yếu tố âm thanh.

Thời điểm chính xác bạn muốn phát phần tử âm thanh này là tùy thuộc vào bạn. Đọc văn bản của nút và so sánh nó với "không" nếu bạn thích.

Ngoài ra

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

SoundManager 2 cung cấp một API dễ sử dụng cho phép phát âm thanh trong bất kỳ trình duyệt hiện đại nào, kể cả IE 6+. Nếu trình duyệt không hỗ trợ HTML5, thì nó sẽ nhận được sự trợ giúp từ flash. Nếu bạn muốn HTML5 chính xác và không có flash, có một cài đặt cho điều đó, preferFlash = false

Nó hỗ trợ 100% âm thanh không có Flash trên iPad, iPhone (iOS4) và các thiết bị + trình duyệt hỗ trợ HTML5 khác

Sử dụng đơn giản như:

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

Đây là bản demo của nó đang hoạt động: http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/


21

Tìm thấy một cái gì đó giống như vậy:

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

5
Điều này là để làm chậm. Mất gần một giây để chơi với các cửa sổ trình duyệt
thenengah

@Codeglot phụ thuộc vào ứng dụng. 1 giây sẽ đáp ứng yêu cầu của tôi.
Muhd

1
Ngoài ra, bạn có thể tải trước nó bằng cách nào đó để thoát khỏi sự chậm trễ.
Muhd

9
Sự chậm trễ đến từ việc phân tích cú pháp DOM, sau đó tải tệp và khởi động nó. Nếu bạn tải trước nó, thì bạn có thể khởi động nó khi cần thiết .
Xeoncross

1 giây sau sự kiện mousedown là một khoảng thời gian dài. Quá lâu.
TARKUS

12

Sử dụng thẻ âm thanh html5 và jquery:

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

từ đây .

Trong quá trình triển khai của mình, tôi đã thêm âm thanh nhúng trực tiếp vào HTML mà không cần nối thêm jquery.


2
Chỉ để tham khảo, tôi đang phát âm thanh trên trình xử lý thành công từ hàm ajax (chạy khi tải trang) và gặp lỗi này : Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first, Chrome Version 70.0.3538.102 (Official Build) (64-bit)... có vẻ là giải pháp ở đây: stackoverflow.com/a/52821721
user1063287


7
$('a').click(function(){
    $('embed').remove();
    $('body').append('<embed src="/path/to/your/sound.wav" autostart="true" hidden="true" loop="false">');
});

Tại sao thực hiện phương pháp này làm cho các thanh cuộn có màu xanh lam trong Chrome?
Brian Leishman

Mở liên kết này nó sẽ giải quyết cả hai vấn đề thanh scrol và cũng chơi âm thanh stackoverflow.com/questions/15483455/...
Azam Alvi

3

Tôi đã viết một hàm nhỏ có thể làm được điều đó, với API âm thanh web ...

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

Đoạn mã sau có thể giúp bạn phát âm thanh trong trang web chỉ sử dụng javascript. Bạn có thể xem thêm chi tiết tại http://sourcecodemania.com/playing-sound-javascript-flash-player/

<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

Điều đầu tiên, tôi không thích điều đó với tư cách là một người dùng.

Cách tốt nhất để làm có lẽ là sử dụng một applet flash nhỏ phát âm thanh của bạn trong nền.

Cũng đã trả lời ở đây: Cách phát âm thanh từ Javascript trên nhiều nền tảng, nhiều trình duyệt?


3
Điều gì tồi tệ về nó nếu người dùng biết một âm thanh sẽ được phát?
lc.

3
Nó rất hữu ích, nếu người dùng cần một tiếng bíp cảnh báo, khi có đơn đặt hàng mới thì sao? có lẽ người dùng không tận mắt trên màn hình trong suốt thời gian, có lẽ tôi cần một tiểu và bật BEEP, sau đó người khác có thể trả lời theo thứ tự .. chỉ vài ví dụ ..
deepcell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.