簡體   English   中英

如何處理Uncaught(在promise中)DOMException:play()請求被pause()調用中斷

[英]How to handle Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause()

下面是我在aspx頁面中的代碼,允許在瀏覽器中播放wav格式的音頻但是使用我當前的代碼我無法在Chrome瀏覽器中播放wav音頻,但它可以在Firefox中使用。 我該如何處理這個異常?

<script>
    window.onload = function () { document.getElementById("audio").play(); }
    window.addEventListener("load", function () { document.getElementById("audio").play(); });
</script>

<body>
    <audio id='audio' controls autoplay>
        <source src="Sounds/DPM317.wav" type="audio/wav" />
        Your browser does not support the audio element.
    </audio>
</body>

對於Chrome,他們更改了自動播放政策,因此您可以在此處閱讀:

var promise = document.querySelector('audio').play();

if (promise !== undefined) {
    promise.then(_ => {
        // Autoplay started!
    }).catch(error => {
        // Autoplay was prevented.
        // Show a "Play" button so that user can start playback.
    });
}

我不知道這對你來說是否仍然存在,但我仍然留下我的評論,所以也許它會幫助別人。 我有同樣的問題,@ dighan在bountysource.com/issues/上提出的解決方案為我解決了這個問題。

所以這是解決我的問題的代碼:

var media = document.getElementById("YourVideo");
const playPromise = media.play();
if (playPromise !== null){
    playPromise.catch(() => { media.play(); })
}

它仍然向控制台拋出錯誤,但至少視頻正在播放:)

嘗試使用catch塊進行這樣的回調。

document.getElementById("audio").play().catch(function() {
    // do something
});
  1. 所有新的瀏覽器支持視頻只能自動播放,請放置

<video autoplay muted="muted" loop id="myVideo"> <source src="https://wrglob.net/Coastline-3581.mp4" type="video/mp4"> </video>

像這樣的東西

  1. 如果您的網站使用https運行,則視頻的網址應與SSL狀態匹配,然后視頻網址也應采用https,HTTP也應相同

muted="muted"屬性添加到HTML5標簽解決了我的問題

我使用的是Chrome 75版。

將靜音屬性添加到視頻標記

<video id="myvid" muted>

然后使用javascript播放它並將muted設置為false

var myvideo = document.getElementById("myvid");
myvideo.play();
myvideo.muted = false;

編輯:需要用戶交互(至少點擊頁面中的任意位置才能工作)

我是第二個Shobhit Verma,我有一個小小的補充說:在他的帖子中他告訴我在Chrome(自己為Opera)中玩家需要靜音才能使自動播放成功...而且具有諷刺意味的是,如果你提升了加載后的音量,它仍然會播放...就像所有那些忽略隱形框架的反彈出機制滑入你的代碼...... php-echoed html和javascript是:10秒setTimeout onLoad的body標簽上升音量到最大,帶自動播放的視頻和靜音='靜音'(是的,$ muted_code部分=“靜音='靜音”)

echo "<body style='margin-bottom:0pt; margin-top:0pt; margin-left:0pt; margin-right:0pt' onLoad=\"setTimeout(function() {var vid = document.getElementById('hourglass_video'); vid.volume = 1.0;},10000);\">";
    echo "<div id='hourglass_container' width='100%' height='100%' align='center' style='text-align:right; vertical-align:bottom'>";
    echo "<video autoplay {$muted_code}title=\"!!! Pausing this video will immediately end your turn!!!\" oncontextmenu=\"dont_stop_hourglass(event);\" onPause=\"{$action}\" id='hourglass_video' frameborder='0' style='width:95%; margin-top:28%'>";

暫無
暫無

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

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