# epg-focus **Repository Path**: generals-space/epg-focus ## Basic Information - **Project Name**: epg-focus - **Description**: 用于电视TV,IPTV机顶盒的web页面;采用类Vue模板语法,达到EPG环境自动聚焦的效果。 - **Primary Language**: JavaScript - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2024-10-20 - **Last Updated**: 2024-10-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 EPG聚焦逻辑,采用类Vue模板语法,通过计算聚焦元素距离,判断距离最小值的元素,达到自动聚焦效果. 由于IPTV机顶盒浏览器内核版本较低且各种魔改内核,js版本尽量采用ECMAScript 3,该项目为的实测兼容的写法,未使用任何打包工具。但并不排除某些低版本魔改内核的不兼容。 ### EPG环境WEB开发注意 1. CSS相关 - 只有部分机顶盒支持少量CSS3特性 - 字体大小(px) 部分盒子字体大小 实际显示顺序不正常: `16px<22px<18px<24px<20px<26px` - CSS颜色值:部分盒子不支持透明值, 盒子间支持情况不一样,rgba颜色、rgb颜色 、16进制颜色,根据实际情况调整,推荐使用16进制颜色 2. HTML相关 避免使用H5新特性 - 本地数据保存请使用cookie,但数量不宜过多, 不支持localStorage, sessionStorage - Linux盒子大都不支持H5中的``标签 - 媒体播放使用EPG环境的`MediaPlayer`对象封装(MediaPlayer对象的坑不在此详细陈列) - EPG环境通过 下面meta标签的content值区分高清、标清进行全屏展示 ``` html ``` - 通过` `标签配合启动java游戏 3. JavaScript相关 - js版本尽量采用ECMAScript 3 (例如常用的,ES5新增的`Object.keys`, `Array.prototype.map`, `JSON`等大都盒子不支持,可通过Polyfill解决) - 页面跳转请使用绝对路径(少数盒子不支持相对路径) ## 功能介绍 iptv上各种逻辑基本可以实现 可制作单页面应用 1. 响应方向按键自动聚焦 2. 超出屏幕元素,可自动移动到屏幕内 3. 可创建弹出层,聚焦逻辑相同 4. 功能演示: ![image text](https://ywwxly.gitee.io/home/video/epg-focus.gif) ## 使用方法 ### 简要 1. HTML要聚焦的元素父级元素中添加```group```属性,```group```属性值为JSON对象形式 - 需要传递```{name:'groupName',focus:'className/focusFn'}``` - name 组名称 - focus 当前组聚焦className 或聚焦方法 - 虚拟事件 ```"left", "right", "up", "down", "click"```以```@```开头的属性定义,方向的属性值为要移动组 ```hasLayer===true``` 必须设置虚拟事件才能切换group 2. HTML要聚焦的元素中添加```isfocus```属性,属性值为真为聚焦className - ```default-focus```为默认聚焦元素 - 虚拟事件 ```"left", "right", "up", "down", "click"```以```@```开头的属性定义,方向的属性值为要移动的元素id - 示例: ```html
``` ```html