[英]Javascript:Why setTimeout(audio.play,500) not working?
[英]Use an audio element's play method as the callback to setTimeout, why not?
我有一個audio
標簽的引用,其play
方法我可以這樣調用:
voice["blessed be"].play()
如果我試着稱之為:
setTimeout(voice["blessed be"].play, 1000)
我明白了:
Uncaught TypeError: Illegal invocation
我不一定會在最終實現中使用setTimeout
; 但是,為什么這不起作用?
這是因為setTimeout
調用它的回調方式。 它將上下文設置為window
來調用回調函數。
所以,它正在呼叫voice["blessed be"].play.call(window)
。
這就像調用
您正在使用audo元素的播放功能,並強制它在window.play
,它不起作用。
window
對象上運行。 window
不是audo元素,因此您會收到錯誤。
你需要使用一些東西
var sound = voice[ 'blessed be' ];
setTimeout( sound.play.bind( sound ), 1000 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.