针对东方有线机顶盒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左右比较合适。
}
});
复制代码