簡體   English   中英

使用音頻元素的播放方法作為setTimeout的回調,為什么不呢?

[英]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) 這就像調用 window.play ,它不起作用。 您正在使用audo元素的播放功能,並強制它在window對象上運行。 window不是audo元素,因此您會收到錯誤。

你需要使用一些東西

var sound = voice[ 'blessed be' ];
setTimeout( sound.play.bind( sound ), 1000 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM