chrome 更新太快了,文章的內容已過時!
chrome 更新太快了,文章的內容已過時!
chrome 更新太快了,文章的內容已過時!chrome
隨着chrome的更新,以前的一些依賴flash的代碼邏輯可能再也不準確了。最近作了一些測試,總結一下。瀏覽器
測試時間:2016年12月。測試版本:win chrome 55。測試
代碼中,可能有一些功能是須要flash支持的,可能同時選用了其餘技術,這時候就就要寫一些邏輯去判斷flash的狀態,以便選擇技術實現。spa
以目前的瞭解,能夠把flash在chrome中的狀態分紅4種:插件
未安裝code
已安裝被停用對象
已安裝已啓用未容許(當前域使用flash)ip
已安裝已啓用已容許flash
是否停用指的是chrome://plugins
中設置是否停用flash:it
是否容許指的是右上角出現阻斷提示時的隨手設置,或在chrome://settings/content
中的Flash設置:
下面來分析下這4種狀態。
通常使用navigator.plugins["Shockwave Flash"]
檢測chrome中flash安裝的狀況,奇怪的是,目前即便沒有安裝flash,這段代碼仍然能夠檢測到flash信息。
經查閱資料和驗證,未安裝flash的chrome中查看chrome://plugins
插件信息,雖然有Adobe Flash Player的信息,但「位置」一項顯示的是「internal-not-yet-present」:
而正常安裝flash時:
二者代碼的區別是這樣的:
因此能夠經過filename這個屬性來檢測是否安裝了flash。
flash被停用時,navigator.plugins["Shockwave Flash"]
沒法檢測到flash信息:
因此這種狀態很輕鬆就能夠判斷。
這種狀態的問題在於,瀏覽器確實安裝了flash,navigator.plugins["Shockwave Flash"]
也能夠檢測到安裝了flash。而當前頁面卻不容許使用flash(chrome的限制策略)。
這種狀態沒法從navigator.plugins
中檢測,由於結果沒有任何異樣。
但由於瀏覽器限制了flash,因此flash對象是沒法成功建立的。能夠設置定時器不斷查詢有沒有建立成功,而後設置一個超時次數,好比50次,若是尚未建立成功的話,能夠認爲是建立超時,標明這種狀態。
暫時沒有想到更好的判斷方法。
不過檢測這種狀態頗有意義。用戶是已經安裝了flash的。只是未容許flash運行,這時候能夠簡單提示用戶設置容許運行就能夠。通常chrome攔截時,右上角會有攔截設置:
這種狀態一切正常,能夠正常使用flash。上文已經提到,插件對象的filename
字段會顯示真正的文件名:
不過flash最終是要被取代的技術。保證flash相關代碼穩定的同時,也要調研替代技術啦。