2014-01-28 133 views
8

這是一個超級簡單的例子,我試圖在鉻上運行一個iphone。其他網絡音頻API的例子像這樣的http://alxgbsn.co.uk/wavepad/工作,但不是我:(簡單的振盪器,但沒有與IOS上的web音頻API聲音

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 

<body> 

    <script> 
    var audioContext, osc 
    audioContext = new (window.AudioContext || window.webkitAudioContext); 
    osc = audioContext.createOscillator() 

    osc.connect(audioContext.destination) 
    if (osc.noteOn) osc.start = osc.noteOn 
    osc.start(0) 
    osc.frequency.value = 440 
    </script> 

</body> 

</html> 

任何想法有什麼錯

編輯

總結答案:

  1. 響應用戶交互啓動音頻
  2. 檢查靜音swi tch關閉

回答

10

iOS只會讓您開始使用Web Audio API播放聲音,作爲用戶操作的結果。

嘗試將該代碼放入某種事件處理程序中。

var elem = document.getElementById('play'), 
    audioContext = new (window.AudioContext || window.webkitAudioContext), 
    osc = audioContext.createOscillator(); 

osc.connect(audioContext.destination); 
if (osc.noteOn) osc.start = osc.noteOn 
osc.frequency.value = 440; 

play.addEventListener('click', function() { 
    osc.start(0); 
}, false); 
+0

現在它在Chrome中工作,但不在Safari(IOS 7)中。任何想法? – sebpiq

+3

$ 10表示您的靜音開關已打開。無論出於何種原因,當靜音開關打開時,Safari不會播放聲音,但Chrome會自動播放。除此之外,Chrome瀏覽器使用與Safari相同的引擎來渲染頁面(減去Nitro JS優化),所以沒有其他理由認爲您的代碼應該可以在一箇中運行,而不能在另一箇中運行。我只是通過JSBin嘗試過,並且靜音開關關閉時都爲我工作。 –

+0

你會贏得10美元!阿爾這是如此愚蠢......所以是靜音開關打開。 – sebpiq