針對東方有線機頂盒UUTVOS操做系統中內置的聯彤瀏覽器web開發,總結一些本身在開發中遇到的問題和技巧。瀏覽器是基於Firefox的閹割版,因此開發中有一些莫名其妙的坑。已經嘗試過使用Vue開發機頂盒web項目,體驗較差:首次加載時間長、頁面卡頓。因爲項目進度推動,當時沒有嘗試組件懶加載和路由懶加載處理,這樣作或許能夠減小首次加載時間。推薦使用 JQuery 進行開發。css
position:absolute;
進行定位,配合 display:inline-block;
使用更佳。<iframe></iframe>
標籤是不兼容的。加載從服務器請求到的 .html 請使用 JQuery 的 .load()
大法。overflow:scroll
,遙控器按鍵只能往下滾,不能往上滾。咱們的後臺是現成的,直接把代碼拷貝到服務器上,在機頂盒上就能夠隨時預覽到項目。html
機頂盒瀏覽器的性能很是低,若是還要作視頻播放的話,JS 可發揮的空間至關有限。git
$(id).css({"backgroundImage":"url('...')"})
和 $(id).attr({"src":"./*.jpg"})
這樣的在 JS 裏面控制 UI 顯示層面的操做要避免,儘可能直接在 HTML 中完成,最多能接受這個操做: $(id).addClass()
。機頂盒瀏覽器就是這麼傲嬌。(這是我試出來的,至於JQ操做性能方面的差別本質仍是須要研究的。)a:focus {}
這個CSS選擇器能夠放心的使用。機頂盒內置的瀏覽器很噁心啊,閹割版的就算了,一些邏輯上的東西跟PC上也不一樣。github
setTimeout(function(), ms)
就搞定了,百試百靈,通常人我都不告訴他^_^。$(document).keydown(function () {
if (event.which === 4097) {
var distance = $("#list").scrollTop();
sessionStorage.removeItem("listScrollTopVal");
sessionStorage.setItem("listScrollTopVal", JSON.stringify(distance));
// 按下肯定鍵後,把得到焦點的元素的 id 保存到 sessionStorage中,
// 這個時候就要在外邊加一個延時函數,甚至能夠將時間設置成 0ms 也行。
setTimeout(function () {
sessionStorage.removeItem("listFocusItemId");
sessionStorage.setItem("listFocusItemId",JSON.stringify(document.activeElement.id));
}, 100);
}
});
複製代碼
position:absolte;
省時省力 ☞↑position:relative
定位,這個是必須的!display:inline-block;
,優於使用flaot:...
浮動佈局。overflow:scroll;
不能往上滾動 ☞↑電視機的可視區域固定,整個頁面是不滾動的,業務場景中,頁面中的局部須要滾動:列表頁、詳情頁。web
overflow:scroll;
會出現滾動條,實現滾動。可是在電視機頂盒上,出現了:能往下滾動,不能往上滾動的問題。<a href="#"></a>
。而且必須設置display:block。;<div class="content">
<a href="#/" style="display:block;outline:none;">
<div class="content-html">須要滾動的內容</div>
</a>
</div>
複製代碼
機頂盒瀏覽器的性能原本就不好,在同一個頁面的 Tab 上切換多個視頻播放,按鍵過快的狀況下,UI上焦點連續切換過去不少個元素了,視頻的播放地址才挨個往過去切換,這個時候很容易形成卡頓或者瀏覽器崩潰。加上放抖動,有效解決用戶快速切換播放引發的卡頓。gulp
$("#nav--second").keydown(function(event){
if(event.which === 39) {
// 這裏的EVAN是一個全局的命名空間,EVAN.timer是一個全局變量
clearTimeout(EVAN.timer);
EVAN.timer = setTimeout(function ()
create(EVAN.homePageVideoUrlArr[2]);
}, EVAN.gap); // 時間1-2s左右比較合適。
}
});
複製代碼