rtsp轉rtmp、hls網頁直播服務器EasyNVR前端兼容性調試:ie下的 pointer-events: none

發現問題

之前在做EasyNVR 的web頁面開發過程中,力求的都是一個播放效果的、功能的展示。對於兼容性也有注意,但有些細節還是難免有所疏忽。

內部測試發現:由於我們是流媒體的實時視頻直播,在web的直播頁面中,我們都是屏蔽、刪除播放器的暫停按鈕、功能的。我們的web頁面播放rtmp、hls使用的是videojs。他是一個開源的播放器,網上也有相關的文檔。

基於需求,結合現實,學習手冊,落實開發,我們通過設置css屬性來完成這個需求:

  • 屏蔽單機頁面暫停
   .video-js .vjs-tech {
        pointer-events: none;
    }

這個屬性設置 很好的在chrome中完成了需求。但是在IE中似乎就沒有能夠完成自己應有的任務了。
結合:

  • 隱藏暫停、開始按鈕
   .vjs-progress-control,.vjs-remaining-time-display{
       visibility: hidden;
   }
   .video-js .vjs-play-control.vjs-playing {
      visibility: hidden;
   }

還可以將他的樣式也一併的隱藏起來。

EasyNVR

但是,在IE瀏覽器下,這些屬性好像並沒有起到作用。

EasyNVR

當我們單擊播放器時,依然會出現暫停的情況。

分析問題

我的第一想法是,是否是videojs對於ie瀏覽器的不兼容。才結果來看, 我在這個方面做了很多的無用功。雖然問題是出現在videojs的播放器上面,但是罪魁禍首不是它。

讓我們完成需求的操作其實是“pointer-events: none;”這個CSS屬性的設置;於是我對這個屬性進行了小小的瞭解。

pointer-events: none
元素永遠不會成爲鼠標事件的target。但是,當其後代元素的pointer-events屬性指定其他值時,鼠標事件可以指向後代元素,在這種情況下,鼠標事件將在捕獲或冒泡階觸發父元素的事件偵聽器。

EasNVR

也就是說,這個屬性的IE還沒有很好的支持;

解決問題

我是我們就需要找個其他方式,來解決這個問題,來完成我們的需求;

我們在js中動態的設置:

 $(".vjs-tech").prop("disabled",true);

後面.prop是設置對象的屬性。
後面兩個參數是設置:disabled的屬性爲false,就是設置爲可用可編輯的意思;
disabled的屬性爲true,就是設置爲不可用、不可編輯的意思。

依然可以達到需求的效果:

EasyNVR

發佈了48 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章