HTMLMediaElement.play(), bir söz döndürür

Web'de otomatik olarak ses ve video oynatmak güçlü bir özelliktir. ve farklı platformlarda farklı kısıtlamalara tabi olan reklamlar gösterilir. Günümüzde çoğu masaüstü tarayıcısı, web sayfalarının en başta Kullanıcı etkileşimi olmadan JavaScript üzerinden <video> veya <audio> oynatma. Bununla birlikte, çoğu mobil tarayıcı, Search Ads 360'ta başlamadan önce Oynatma işlemi JavaScript tarafından başlatılabilir. Bu sayede mobil kullanıcılar, Bu kullanıcıların çoğu bant genişliği için ödeme yapar veya açıkça gösterilmeden yanlışlıkla medyayı indirmeye ve oynatmaya başlama sayfayla etkileşimde bulunur.

Kullanıcı etkileşiminin gerçek zamanlı performans başlamak ve video oynatılırken oluşan hataları algılamak için (otomatik) oynatma denenir ve başarısız olur. Çeşitli geçici çözümler olmakla birlikte ideal değildir. iyileştirme Bu belirsizliği gidermek için kullanılan temel play() yönteminin süresi çoktan sona ermiştir ve . web platformu Arkadaş Bitkiler projesinde Chrome 50.

Bir <video> veya <audio> öğesindeki play() çağrısı artık Vaat. Oynatma başarılı olursa Promise yerine getirilir ve oynatma başarısız olursa Promise reddedilir ve hata mesajı görebilirsiniz. Bu sayede aşağıdaki gibi sezgisel bir kod yazabilirsiniz:

var playPromise = document.querySelector('video').play();

// In browsers that don’t yet support this functionality,
// playPromise won’t be defined.
if (playPromise !== undefined) {
    playPromise.then(function() {
    // Automatic playback started!
    }).catch(function(error) {
    // Automatic playback failed.
    // Show a UI element to let the user manually start playback.
    });
}

Yeni Promise tabanlı yöntem, play() yönteminin başarılı olup olmadığını belirlemenin yanı sıra arayüz, play() yönteminin ne zaman başarılı olduğunu belirlemenizi sağlar. Bağlamlar var. Web tarayıcısı oynatmanın başlatılmasını geciktirmeye karar verebilir (örneğin, masaüstü Chrome, <video> sekmesi görünür olana kadar oynatmaya başlamaz. Sözler oynatma gerçekten başlayana kadar tamamlayın, yani then() içindeki kod medya içeriği oynatılıncaya kadar yürütülüyor. play() adlı müşterinin başarılı olup olmadığını belirlemek için kullanılan önceki yöntemler, örneğin bir playing etkinliği için belirli bir süre beklemek ve gerçekleşmezse başarısız olduğunu varsaymak gibi reklam öğeleri, gecikmeli oynatma senaryolarında yanlış negatiflere açıktır.

Canlı bir örnek yayınladık. inceleyeceğiz. Bu Promise temelli bağlantıyı destekleyen Chrome 50 gibi bir tarayıcıda görüntüleyin kullanır. Önceden uyarın: Sayfayı ziyaret ettiğinizde sayfa otomatik olarak müzik çalar. ( elbette öyle değil!)

Tehlike bölgesi

<video> içindeki <source>, play() sözünün asla reddedilmemesine neden oluyor

<video src="not-existing-video.mp4"\> için play() taahhüdü şu şekilde reddedilir: olması beklenir. <video><source src="not-existing-video.mp4" type='video/mp4'></video> için play() taahhüdü hiçbir zaman reddetmez. Bu durum yalnızca geçerli kaynak olmadığında gerçekleşir.

Chromium Hatası