Skip to content

XEpg 速查表

本文档概述了 XEpg JavaScript 库的主要组件和功能,该库专为管理交互式用户界面元素、导航和实用工具函数设计,特别适用于 IPTV 或类似机顶盒环境。库中包括处理区域(AreaClass)、元素(EleClass)、导航(NavObj)和实用工具(UtilObj)的类,以及 Base64 编解码和 MD5 哈希功能。

概述

XEpg 库为构建交互式界面提供了框架,特别适用于基于电视的应用。它支持:

  • 区域管理:将 UI 元素组织成网格状区域,支持导航和事件处理。
  • 元素操作:通过链式方法管理 DOM 元素,包括样式、事件和内容。
  • 导航处理:处理键盘/遥控器输入,支持方向键、颜色键等。
  • 实用工具:提供 AJAX、Cookie、字符串操作等工具。
  • 编码/解码:包括 Base64 和 MD5 用于数据处理。

库通过全局 XEpg 对象访问,包含命名空间如 XEpg.areaXEpg.$XEpg.NavXEpg.Util

AreaClass

AreaClass 用于管理网格状的 UI 元素区域,支持导航、焦点处理和事件绑定。它支持链式方法调用以进行配置。

AreaClass 构造函数

javascript
new XEpg.Area(id)
  • 参数
    • id (string):区域的唯一标识符。
  • 返回值AreaClass 实例。
  • 示例
    javascript
    var area = new XEpg.Area("nav1");

AreaClass 属性

属性类型描述
areaIdstring区域的唯一 ID。
columnnumber网格的列数(默认:1)。
rownumber网格的行数(默认:1)。
startIndexnumber元素 ID 的起始索引(默认:0)。
selectIdstring当前选中元素的 ID。
upEventObjobject区域边界上键的事件。
downEventObjobject区域边界下键的事件。
leftEventObjobject区域边界左键的事件。
rightEventObjobject区域边界右键的事件。
subClickEventObjobject子元素的点击事件。
subFocusEventObjarray子元素的焦点显示事件。
subBlurEventObjarray子元素的失焦显示事件。
subScrollTextEventObjobject子元素的文字滚动设置。
subUpEventObjobject子元素的上键事件。
subDownEventObjobject子元素的下键事件。
subLeftEventObjobject子元素的左键事件。
subRightEventObjobject子元素的右键事件。
upTargetobject上方向导航的目标。
downTargetobject下方向导航的目标。
leftTargetobject左方向导航的目标。
rightTargetobject右方向导航的目标。

AreaClass 方法

方法参数返回值描述
setSelectId(selectId)selectId (string):要设置的选中 ID。AreaClass设置选中的元素 ID。
setColumn(column)column (number):列数。AreaClass设置网格的列数。
setRow(row)row (number):行数。AreaClass设置网格的行数。
setStartIndex(startIndex)startIndex (number):元素 ID 的起始索引。AreaClass设置元素 ID 的起始索引。
up([...args])args (object/array):导航或函数对象。AreaClass为区域边界上键绑定操作。
down([...args])args (object/array):导航或函数对象。AreaClass为区域边界下键绑定操作。
left([...args])args (object/array):导航或函数对象。AreaClass为区域边界左键绑定操作。
right([...args])args (object/array):导航或函数对象。AreaClass为区域边界右键绑定操作。
subClick([...args])args (object/array):点击事件对象(如 {func, url})。AreaClass为子元素绑定点击事件。
subFocus([...args])args (object/array):焦点事件对象(如 {class, style})。AreaClass为子元素绑定焦点显示事件。
subBlur([...args])args (object/array):失焦事件对象(如 {class, style})。AreaClass为子元素绑定失焦显示事件。
subScrollText(setObj)setObj (object):文字滚动设置(如 {enTextLen, enSingleWidth})。AreaClass配置子元素的文字滚动。
subUp([...args])args (object/array):子元素上键事件对象。AreaClass为子元素绑定上键事件。
subDown([...args])args (object/array):子元素下键事件对象。AreaClass为子元素绑定下键事件。
subLeft([...args])args (object/array):子元素左键事件对象。AreaClass为子元素绑定左键事件。
subRight([...args])args (object/array):子元素右键事件对象。AreaClass为子元素绑定右键事件。
getSelectId()string返回选中的元素 ID。
getColumn()number返回网格的列数。
getRow()number返回网格的行数。
run()应用绑定到元素;必须调用以激活区域。
getSubEleNavObj(index)index (number):元素索引。object根据索引返回子元素的导航对象。
getSubNavArray(navObj, inSubObj)navObj (object), inSubObj (object):导航对象。array合并子元素的导航对象。
getUpObj(i, j)i (number):行索引,j (number):列索引。object返回网格位置的上键事件对象。
getDownObj(i, j)i (number):行索引,j (number):列索引。object返回网格位置的下键事件对象。
getLeftObj(i, j)i (number):行索引,j (number):列索引。object返回网格位置的左键事件对象。
getRightObj(i, j)i (number):行索引,j (number):列索引。object返回网格位置的右键事件对象。
onOutHandle(positionObj, targetObj, positionStr)positionObj (object), targetObj (object), positionStr (string)。处理边界事件(内部使用)。
eventObjHandle(eventObjs, positionStr)eventObjs (object), positionStr (string)。处理边界的事件对象(内部使用)。
areaHandle(itemObj, positionStr)itemObj (object), positionStr (string)。处理区域导航(内部使用)。
memoryHandle(positionStr, toAreaId, toIndex)positionStr (string), toAreaId (string), toIndex (number)。管理区域的导航记忆。
onOutUp()AreaClass处理上边界导航。
onOutDown()AreaClass处理下边界导航。
onOutLeft()AreaClass处理左边界导航。
onOutRight()AreaClass处理右边界导航。
setSelectedId(id)id (string):元素 ID。设置并显示选中的元素。
getTargetAreaEleId(areaId, index, fromIndexArr, fromIndex)areaId (string), index (number), fromIndexArr (array), fromIndex (number)。string返回导航目标的元素 ID。
getEleIdByIndex(areaIndex)areaIndex (number):目标索引。string根据索引返回目标区域的元素 ID。
getAreaIndexByCurrentId()number返回区域中当前元素的索引。
setIdStartIndexRefreshArea(startIndex)startIndex (number):新的起始索引。AreaClass使用新的起始索引刷新区域。
clearObj([startIndex, count])startIndex (number, 可选), count (number, 可选)。清除元素绑定。
deleteObj([startIndex, notDelArea])startIndex (number, 可选), notDelArea (boolean, 可选)。删除元素并可选删除区域。

EleClass

EleClass 提供链式接口用于操作 DOM 元素,包括样式、内容和事件处理。

EleClass 构造函数

javascript
new XEpg.EleClass(id)
  • 参数
    • id (string):DOM 元素的 ID。
  • 返回值EleClass 实例。
  • 示例
    javascript
    var element = new XEpg.EleClass("testDiv");

EleClass 属性

属性类型描述
idstringDOM 元素的 ID。
objobject缓存的 DOM 元素引用。
scrollTextEventObjobject文字滚动设置。
upEventObjobject上键事件绑定。
downEventObjobject下键事件绑定。
leftEventObjobject左键事件绑定。
rightEventObjobject右键事件绑定。
clickEventObjobject点击事件绑定。
focusEventObjarray焦点事件绑定(默认:[{"class": "item item_focus"}])。
blurEventObjarray失焦事件绑定(默认:[{"class": "item"}])。

EleClass 方法

方法参数返回值描述
clearObj()EleClass清除缓存的 DOM 引用和文字滚动对象。
deleteObj([locationObj])locationObj (object, 可选):{direction, val} 用于父节点定位。删除 DOM 元素并清除缓存。
show()EleClass显示元素(设置 display: block)。
hide()EleClass隐藏元素(设置 display: none)。
html([val])val (string, 可选):要设置的 HTML 内容。EleClass 或 string设置或获取元素的 innerHTML。
addHtml(val, [isbefore])val (string):要追加的 HTML,isbefore (boolean, 可选):true 为前置追加。EleClass追加 HTML 内容。
value([val])val (string, 可选):要设置的值。EleClass 或 string设置或获取元素的值(适用于输入框)。
addValue(val, [isbefore])val (string):要追加的值,isbefore (boolean, 可选):true 为前置追加。EleClass追加元素的值。
style([val])val (string, 可选):要设置的 CSS 样式。EleClass 或 string设置或获取元素的 CSS 样式。
addStyle(val)val (string):要追加的样式。EleClass追加 CSS 样式。
removeStyle(val)val (string):要移除的样式。EleClass移除指定的 CSS 样式。
className([val])val (string, 可选):要设置的类名。EleClass 或 string设置或获取元素的类名。
addClassName(val)val (string):要添加的类名。EleClass如果类名不存在则添加。
removeClassName(val)val (string):要移除的类名。EleClass移除指定的类名。
styleAttr(key, [val])key (string):样式属性,val (string, 可选):要设置的值。EleClass 或 string设置或获取特定的样式属性。
onUp([...args])args (object/array):上键事件对象。EleClass绑定上键事件。
onDown([...args])args (object/array):下键事件对象。EleClass绑定下键事件。
onLeft([...args])args (object/array):左键事件对象。EleClass绑定左键事件。
onRight([...args])args (object/array):右键事件对象。EleClass绑定右键事件。
onClick([...args])args (object/array):点击事件对象。EleClass绑定点击事件。
onFocus([...args])args (object/array):焦点事件对象。EleClass绑定焦点事件。
onBlur([...args])args (object/array):失焦事件对象。EleClass绑定失焦事件。
scrollText(setObj)setObj (object):文字滚动设置。EleClass配置文字滚动。
isActive()boolean检查元素是否激活(可见且未禁用)。
effectHandle(id)id (string):目标元素 ID。boolean对目标元素应用导航效果。

NavObj 处理键盘/遥控器输入,支持方向键、颜色键和页面导航。

属性类型描述
keyPageUpTimeObjobject上页键去抖动的超时对象。
keyPageDownTimeObjobject下页键去抖动的超时对象。
方法参数返回值描述
keyBind()将按键事件绑定到文档。
key_pageUp_event()处理上页键(默认空操作,需重写)。
key_pageDown_event()处理下页键(默认空操作,需重写)。
key_menu_event()处理菜单键(默认空操作,需重写)。
key_home_event()处理主页键(默认空操作,需重写)。
key_exit_event()处理退出键(默认空操作,需重写)。
key_del_event()处理删除键(默认空操作,需重写)。
key_red_event()如果不在 live.html,导航到 live.html
key_green_event()如果不在 lookback.html,导航到 lookback.html
key_yellow_event()如果不在 dibb.html,导航到 dibb.html
key_blue_event()如果不在 service.html,导航到 service.html
timeKeyPageUp()为上页键设置 500ms 去抖动延迟。
timeKeyPageDown()为下页键设置 500ms 去抖动延迟。
key_up_opt()触发当前元素的上键事件。
key_down_opt()触发当前元素的下键事件。
key_left_opt()触发当前元素的左键事件。
key_right_opt()触发当前元素的右键事件。
key_click_opt()触发当前元素的点击事件。
key_back_opt()调用自定义返回页面逻辑(XEpg.My.backPage)。
onPressdNumber(number)number (number):按下的数字。处理数字键按下(默认空操作,需重写用于调试)。

UtilObj

UtilObj 提供实用工具函数,包括 AJAX、Cookie、字符串操作等,优化用于低端设备。

UtilObj 方法

方法参数返回值描述
createJsonp(id, url)id (string):脚本 ID,url (string):JSONP 地址。创建 JSONP 脚本元素。
deleteJsonp(id)id (string):脚本 ID。删除 JSONP 脚本元素。
jsonTrim(str)str (string):要清理的字符串。string移除字符串中的换行和回车。
isArray(obj)obj (object):要检查的对象。boolean检查对象是否为数组。
argumentsToArray(setObj)setObj (object):参数对象。array将参数对象转换为数组。
ajaxGet(url, [callBack, time])url (string), callBack (function, 可选), time (number, 可选)。string 或 无执行 AJAX GET 请求(同步或异步)。
ajaxPost(url, content, [callBack, time])url (string), content (string), callBack (function, 可选), time (number, 可选)。string 或 无执行 AJAX POST 请求(同步或异步)。
gotoPage(url)url (string):目标地址。导航到指定地址,特定情况下追加会话 ID。
setCookie(key, val)key (string), val (string):Cookie 键和值。设置 7 天有效期的 Cookie。
getCookie(key)key (string):Cookie 键。string 或 null获取 Cookie 值。
delCookie(key)key (string):Cookie 键。删除 Cookie。
objectToStr(jsonObj)jsonObj (object):JSON 对象。string将 JSON 对象转换为字符串。
convertStr2Obj(paramStr)paramStr (string):查询字符串(如 a=1&b=2)。object将查询字符串转换为对象。
getStrRealLen(str)str (string):输入字符串。number计算字符串真实长度(中文字符计为 2)。
getSubStr(str, len, [isSuffix])str (string), len (number), isSuffix (boolean, 可选)。string截取字符串,可选添加省略号。
numSupplyZero(initNumStr, numStr)initNumStr (string), numStr (string):要格式化的数字。string为数字添加前导零。
getPageTotal(totalNum, pageSize)totalNum (number), pageSize (number)。number根据总条数和每页条数计算总页数。
getSliceList(objs, pageIndex, pageSize)objs (array), pageIndex (number), pageSize (number)。array为分页切分数组。
replaceUrlParams(url, key, value)url (string), key (string), value (string/number)。string替换或追加 URL 参数。
getUrlParam(strname, [url])strname (string), url (string, 可选)。string 或 null获取 URL 参数值。
getUrlParameterObj([url])url (string, 可选):目标地址。object 或 null获取 URL 的所有参数对象。
timeFormat(time)time (number):秒数。string将秒数格式化为 hh:mm:ss
addNavigationUrl(url)url (string):要记录的地址。将地址添加到导航历史(基于 Cookie)。
gotoBackNavigationUrl()导航到上一个历史地址。
getLastNavigationUrl()string获取最后一个地址,不移除记录。
getBackNavigationUrl()string获取并移除最后一个地址。
parseJSON(data)data (string):JSON 字符串。object将 JSON 字符串解析为对象。
trim(text)text (string):要清理的文本。string移除文本首尾空白。
each(obj, callback)obj (object/array), callback (function):迭代函数。object迭代对象或数组。
renderTpl(data, tpl)data (object/array), tpl (string):模板字符串。string使用数据渲染模板。
countDown(seconds, end, [run])seconds (number), end (function), run (function, 可选)。object运行倒计时计时器,带回调函数。

Base64

提供 Base64 编码和解码,包含 escape/unescape 处理。

Base64 方法

方法参数返回值描述
base64.encode(s)s (string):输入字符串。string将字符串编码为 Base64。
base64.decode(s)s (string):Base64 字符串。string解码 Base64 字符串。

MD5

提供字符串的 MD5 哈希功能。

MD5 方法

方法参数返回值描述
MD5(str)str (string):输入字符串。string生成 MD5 哈希(大写)。

使用示例

创建和配置区域

javascript
XEpg.area("nav1")
  .setColumn(5)
  .setRow(2)
  .setStartIndex(0)
  .subFocus([{"class": "item item_focus"}])
  .subBlur([{"class": "item"}])
  .subClick([{"url": "page.html"}])
  .up({"area": {"id": "nav2", "indexs": [0,0,0,1,1], "isMemory": true}})
  .run();

操作元素

javascript
XEpg.$("testDiv")
  .html("<p>你好,世界</p>")
  .addClassName("highlight")
  .style("left: 100px; top: 50px")
  .show();

处理导航

javascript
// 重写上页事件
XEpg.Nav.key_pageUp_event = function() {
  console.log("上页键按下");
};

// 触发当前元素的点击事件
XEpg.Nav.key_click_opt();

使用实用工具

javascript
// AJAX GET 请求
XEpg.Util.ajaxGet("data.json", function(data) {
  console.log(data);
});

// 设置 Cookie
XEpg.Util.setCookie("user", "john_doe");

// 截取字符串
var text = XEpg.Util.getSubStr("你好 世界", 6, true); // 返回 "你好..."

Base64 编码/解码

javascript
var encoded = base64.encode("你好世界"); // 编码为 Base64
var decoded = base64.decode(encoded); // 解码回 "你好世界"

MD5 哈希

javascript
var hash = MD5("password123"); // 生成 MD5 哈希

注意事项

  • 兼容性:库针对低端设备(如机顶盒)设计,包含对旧浏览器(如 IE6)的兼容处理。
  • 链式方法AreaClassEleClass 支持方法链式调用,代码更简洁。
  • 区域激活:配置 AreaClass 后必须调用 run() 以应用绑定。
  • 导航历史:使用 Cookie 存储导航历史,可能受存储限制。
  • 错误处理:AJAX 方法在出错时返回空对象以防止崩溃。
  • 性能:谨慎使用同步 AJAX 调用(ajaxGetajaxPost 无回调),因其会阻塞线程。

如需更多详细信息,请参阅源代码注释或联系开发团队。


此 API 文档基于提供的代码涵盖了 XEpg 库的核心功能。如需补充或扩展特定部分,请告知!