1. 程式人生 > >Firefox關於Audio事件的bug及解決方案

Firefox關於Audio事件的bug及解決方案

bug起因

在專案需求中,需要在播放器的進度條部分新增標籤,標籤按照時間節點分佈,因此需要獲取整個音訊的時長audio.duration,在chrome中,可以給audio的canplay事件繫結函式獲取時長,然後呼叫渲染標籤的函式,但是在firefox中,以這種方式繫結的函式無法執行:

audio.addEventListener("canplay", function () {
    duration = audio.duration;
    showTags();
 }, false);

解決方法

在W3C的測試頁面,火狐是可以執行的,但使用斷點除錯時,無法執行到函式內部的程式碼,經過多次嘗試,在以下三種方法中,

<audio|video oncanplay="SomeJavaScriptCode">
audio|video.oncanplay=SomeJavaScriptCode;
audio|video.addEventListener("canplay", function()
  {
  //SomeJavaScriptCode
  }
);

第一種無法執行在document.ready之後定義的函式,第三種完全無法執行,只有第二種,將audio.oncanplay = showTags();可以執行。

但這種方法在chrome中,如果在函式內部獲取audio.duration,則會顯示NaN


最後的解決辦法是將火狐和chrome的方法都寫上以相容不同的瀏覽器,,因為canplay不能繫結兩個函式,所以後面用canplaythrough來代替。

  audio.oncanplay = showTags();
  // 其他
  audio.addEventListener("canplaythrough", function () {
    duration = audio.duration;
    // alert(duration);
    showTags();
  }, false);

相關推薦

Firefox關於Audio事件bug解決方案

bug起因 解決方法 bug起因 在專案需求中,需要在播放器的進度條部分新增標籤,標籤按照時間節點分佈,因此需要獲取整個音訊的時長audio.duration,在chrome中,可以給audio的canplay事件繫結函式獲取時長,然後呼叫

Prometheus配置過程中出現的bug解決方案

一、簡介 Node exporter,Promenade和Alertmanager在安裝配置後,在除錯Prometheus執行中出現了不少bug,針對這些bug進行了解決。本部落格主要蒐集總結這些bug和解決方案,進行記錄。 Prometheus執行命令參考如下: docker ru

Swiper外掛 loop:true時引發繫結dom的click事件無效解決方案

現象 在使用 swiper 這個庫的時候,一旦設定 loop:true 的時候,有時會遇到 dom 繫結事件無法觸發的問題。 原因 當loop模式下slides前後會clone若干個slide,從而形成一個環路,但是卻不會複製繫結在dom上的c

Swiper外掛 loop:true時引發繫結dom的click事件無效解決方案

現象 在使用 swiper 這個庫的時候,一旦設定 loop:true 的時候,有時會遇到 dom 繫結事件無法觸發的問題。 原因 當loop模式下slides前後會clone若干個slide,從而形成一個環路,但是卻不會複製繫結在dom上的click事件。 解決

移動開發中一些bug解決方案

網頁開發要面對各種各樣的瀏覽器,讓人很頭疼,而移動開發中,你不但要面對瀏覽器,還要面對各種版本的手機,ios好一點,而安卓就五花八門了,你可能在開發中也被它們折磨過,或者正在被它們折磨,我在這裡說幾個我在開發中遇到的比較難纏問題,和解決方案,給其他朋友提個醒,因為一旦碰到了這

caffe常見bug解決方案

1、Check failed: shape[i] <= 0x7fffffff / count_ (1000 vs. 684) blob size exceeds INT_MAX 意思是圖片大小過大,超出了caffe設定的INT值範圍,一種最為簡便的方法是將其中較大的圖

開發中遇到的bug解決方案(一)

該異常表示不能新增視窗,通常是所要依附的view已經不存在導致的。[解決方案]:Dialog&AlertDialog,WindowManager不能正確使用時,經常會報出該異常,原因比較多,幾個常見的場景如下:1.上一個頁面沒有destroy的時候,之前的Activity已經接收到了廣播。如果此時之前

iOS開發專案BUG彙總解決方案(持續更新)

一.用Cocoapods新增第三方類庫出現‘XCTest/XCTest.h’file not found 1、點選Pods - TARGETS -[Pods-你的專案名Tests-Specta]-Build Settings ,搜尋Framework sear

java開發中遇到的錯誤(bug解決方案

遇到同樣的錯誤,難題,可再一再二,卻不可再三再四。所以對自己程式設計,開發過程中遇到的難題,bug,錯誤,當時是整麼解決的做一下記錄,我覺得是很有必要: 1.javac編譯.java類檔案時,報: 錯誤: 編碼GBK的不可對映字元, 解決方案是:將  Javac xxx.jav

onchange事件在IE和FF下的表現解決方案

在最近做的一個專案中,有這麼一個功能點:頁面上有一個checkbox,當用戶選擇或者取消選擇該checkbox時會向後臺發一個jsonp請求。當時的實現是為這個checkbox新增一個onchange事件,但結果卻出人意料,為此,我深入的研究了一下,發現了onchange事

IE6中CSS常見BUG全集解決方案

IE6雙倍邊距bug 當頁面內有多個連續浮動時,如本頁的圖示列表是採用左浮動,此時設定li的左側margin值時,在最左側呈現雙倍情況。如外邊距設定為10px, 而左側則呈現出20px,解決它的方法是在浮動元素上加上display:inline;的樣式,這樣就可避免雙倍

Linux PHP安裝遇見的問題解決方案

linux php安裝出現錯誤 解決方法 遇到的問題與解決方案 問題一:報以下錯誤./configure以下錯誤發生Sorry, I cannot run apxs. Possiblereasons follow:1. Perl is not installed2. apxs was not fou

CentOS 7 安裝MySQL 5.6遇到問題解決方案

linux localhost not ces name 解決 info target case centos下安裝mysql真的沒有想象中那麽容易,在這裏我總結一下遇到的問題 1. ERROR 2002 (HY000): Can’t connect to loca

內存溢出原因解決方案

使用 -xmx 遞歸調用 其它 地址 str 啟動 遞歸 對象 參考地址:http://baike.baidu.com/view/79183.htm 內存溢出是指應用系統中存在無法回收的內存或使用的內存過多,最終使得程序運行要用到的內存大於虛擬機能提供的最大內存

click和blur事件沖突解決方案

一個 輸入 同一時間 文字 col mousedown lur span spa 場景:例如做一個模仿百度搜索的搜索框,輸入文字下面會有匹配項,當點擊下拉項中的值時,就將值添加到搜索框中同時隱藏下拉框,點擊其他地方就直接隱藏下拉框,這時所需要的事件分別為 下拉框事件oncl

移動端常見問題解決方案

ont 方案 不同 頁面 initial sca 刷新 detect 編碼 H5頁面窗口自動調整到設備寬度,並禁止用戶縮放頁面 <meta name="viewport" content="width=device-width,initial-scale=1.0,

Uber使用Swift重寫APP的踩坑經歷解決方案(轉載)

result 框架 退出 帶來 hole 懶漢 將在 例子 穩定 本文出自Uber移動架構和框架組負責人托馬斯·阿特曼於2016年在灣區Swift峰會上的演講,分享了使用Swfit重寫Uber的好與壞。以下為譯文: 我是托馬斯·阿特曼,目前是Uber移動架構和框架組負責人。

出現問題集解決方案

pan class parameter tex href pcl 通過 value log 出現 host parameter is null 錯誤,是代表在使用httpclient執行請求的時候,host地址參數有錯誤造成, 原因:1,URL地址記得加上:HTTP://

利用SSH框架開發時遇到的各種Bug解決方法

for manage unmap 獲取 extension cfg.xml request rem soci 1、hibernate自動生成的配置文件 hibernate.cfg.xml 有時候是有問題的,會出現 org.hibernate.HibernateExcept

[原創]嵌入CEF遇到的問題解決方案

問題解決 pan single 如果 bottom 谷歌瀏覽器 進程間通訊 handle 沒有 這幾天程序嵌入谷歌瀏覽器,各種坑,不容易,記錄之。。。希望到此為止 1. 開了多進程模式之後,渲染進程RenderProcess斷點沒有進入。   只有在單進程模式(CefSin