# 页面编码规范

注意

LOL端游页面编码统一使用gbk编码

<meta charset="gbk">

# LCU客户端规范

# 客户端设计规范

名称 说明 备注
页面尺寸 2110*1440 考虑到兼容问题,因此设计稿的尺寸为 2110*1440
可视访问 1055*720 默认的可视访问 (除好友列表之外的)
中英文字体 引用客户端内嵌字体 设计稿请使用微软雅黑
视频 webm、mp4 优先使用webm格式
使用透明视频时需注意视频编码格(vp9+alpha通道)

# 客户端页面规范

客户端加载load模块,引入客户端通信js并执行页面与客户端通信脚本(必须引入执行) 如未加载此js,页面在客户端侧无法运行。 由于客户端api的特殊性,在浏览器下是无法访问客户端的环境的。需要在客户端环境才可以体验,页面提交后可联系前端或者开发人员在客户端内验证。

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="gbk">
<!-- 监测代码和禁止搜索收录 -->
<meta name="robots" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="tgtest-ignore" content="all,description,title,keywords">
<style>
.subnav{
    position: absolute;
    z-index: 100;
    top: 88px;
    left: 35px;
}
.loading {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    z-index: 99;
    background-color: #000;
    display: flex;
    justify-content: center;
    align-items: center;
}
.loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 40px;
    height: 40px;
    background: url(//game.gtimg.cn/images/lol/act/a20230420tocpasss/loading.webp);
    -webkit-animation: spin 4s linear infinite;
    animation: spin 4s linear infinite;
    background-size: cover;
    z-index: 990;
}
@keyframes spin {
    to {
        -webkit-transform: rotate(1turn);
        transform: rotate(1turn);
    }
}
</style>
</head>
<body>
    <div class="wrap">
    <!-- loading,图片预加载完成后显示主内容 -->
    <div id="loading" class="loading"></div>
    <div class="container">
        <div id="SubNavs" class="subnav"></div>
        <div id="content" class="content">
        <!-- 内容 -->
        </div>
    </div>
 </div>
<!-- 通用脚本、统计代码 -->
<script src="//js.aq.qq.com/js/aq_common.js"></script>
<script src="https://lol.qq.com/client/lcu/script-rclient-window-messenger.js"></script>
<script src="https://game.gtimg.cn/images/js/milo-next/latest/milo.gbk.min.js"></script>
<script src="https://lol.qq.com/client/lcu/js/subnav.js"></script>
<script src="https://game.gtimg.cn/images/js/plugin/report/atReport.js" charset="utf-8"></script>
<script>
    // 客户端通信load模块
    window.parent.postMessage({
    type: 'RClientWindowMessenger',
    messageType: 'rcp-fe-lol-home-loaded'
    },'*')

    var setSite={ //设置网站属性
            siteType:"a20230701xxx", //必填项:"os"代表是官网,如果不是,则填写actName例如a20160701xxx
            pageType:"index", //必填项:本页面的定位;按照页面含义填写例如main||list||detail||download||share||page1||pageN,不支持点(.)、下划线(_)
            project:"ingame", //选填项:如果是官网模块则是必填;按照模块内容,填写固定的对应值;官网或微社区base;同人站doujin;赛事match;故事站story;文化站history;粉丝站fans;爆料站coming;论坛bbs;皮肤skin;默认other;
            ingame: true,
            autoClick: false,//是否自动上报按钮&a的点击。选填项:默认false。非必要不开启
            autoAreaStay: false,//是否自动上报dom中填写dt-areaid的区域停留时长。选填项:默认false。非必要不开启
        };
    if(typeof LOL_SEND_DATA_FN_AT == 'function'){LOL_SEND_DATA_FN_AT();};//千万不能忘记!
</script>
</body>
</html>

# 客户端API接口

# 商城购买

在页面中点击购买按钮,通过客户端的api事件,直接在打开客户端的商城模块,并定位到某款皮肤或者英雄、礼包

<a href="javascript:;" id="btn"  data-store-id="16015" data-store-type="CHAMPION_SKIN" data-store-page="skins">
  <span>打开商城英雄</span>
</a>
document.getElementById('btn').onclick = function () {
    var inventoryType = $(this).attr('data-item-type');
    var itemId = $(this).attr('data-item-id');
    var pageId = $(this).attr('data-page-id');
    RClientWindowMessenger.sendMessage({
      messageType: 'rcp-fe-lol-home-open-store',
      data: {
          inventoryType: inventoryType,
          itemId: itemId,
          page: pageId
      }
  });
}

# 配置说明

ID 类型 模块
英雄id CHAMPION 英雄(champions)
英雄道具包 (bundles_champions)
皮肤id CHAMPION_SKIN 皮肤(skins)
炫彩皮肤(chromas)
皮肤道具包(bundles_skins)
棋盘皮肤(tft_map_skins)
礼包id BUNDLES
BUNDLES
战利品(hextech)
表情(emotes)
守卫(ward_skins)
图标(icons)
加成道具( boosts)
符文页(runes)
道具包 (bundles_accessories)
  • 打开游戏商城的指定皮肤 则对应设置:data-item-type="CHAMPION_SKIN"data-item-id="16015"data-page-id="skins"
<a href="javascript:;" id="btn" data-item-type="CHAMPION_SKIN" data-item-id="16015" data-page-id="skins"></a>
  • 打开游戏商城的指定英雄 则对应设置:data-item-type="CHAMPION"data-item-id="16"data-page-id="champions"
<a href="javascript:;" id="btn" data-item-type="CHAMPION_SKIN" data-item-id="16015" data-page-id="skins"></a>
  • 打开游戏商城的指定礼包,礼包时可不填写pageid, 则对应设置:data-item-type="BUNDLES"data-item-id="99900936"data-page-id=""
<a href="javascript:;" id="btn" data-item-type="BUNDLES" data-item-id="16015" data-page-id=""></a>

# 页面中购买

在页面中如需要在当前页面中直接购买单皮肤或单英雄的,可通过客户端的api事件直接在当前页面中直接完成购买 仅支持单皮肤和单英雄的购买

<a href="javascript:;" id="popSkin" >
  <span>当前购买皮肤或英雄</span>
</a>
document.getElementById('popSkin').onclick = function () {
    RClientWindowMessenger.sendMessage({
        messageType: 'rcp-fe-lol-home-open-paw',
        data: {
            inventoryType: 'CHAMPION_SKIN',//CHAMPION,CHAMPION_SKIN
            itemId: 22011 // 英雄id或皮肤id
        }
    });
};

# 英雄详情

在页面中如需查看某个英雄的详情或者皮肤,技能等,可通过客户端的api事件直接在打开客户端英雄详情介绍

<a href="javascript:;" id="openChampion">
  <span>打开英雄详情</span>
</a>
document.getElementById('openChampion').onclick = function () {
    RClientWindowMessenger.sendMessage({
        messageType: 'rcp-fe-lol-home-open-champion-details',
        data: {
            section:"overview",// "overview"(总览), "abilities"(技能), "skins"(皮肤)
            championId: 22 //英雄id
        }
    });
};

# 客户端弹出层

在页面中如需在客户端打开一个全屏弹出层可通过客户端的api事件,直接在打开客户端弹出层

<a href="javascript:;" id="openModal">
  <span>打开客户端弹出层</span>
</a>
 document.getElementById('openModal').onclick = function () {
    RClientWindowMessenger.sendMessage({
        messageType: 'rcp-fe-lol-home-open-full-page-modal',
        data: {
            url: url //打开的地址路径
        }
    });
};

# 客户端视频播放

在页面中点击视频播放,通过客户端的api事件,直接在打开客户端弹出层并且直接播放视频

<a href="javascript:;" id="openVideo">
  <span>打开视频播放</span>
</a>
 document.getElementById('openVideo').onclick = function () {
    RClientWindowMessenger.sendMessage({
        messageType: 'rcp-fe-lol-home-open-full-page-modal',
        data: {
            url: 'https://lol.qq.com/client/lcu/page/video.html?vid=z3031bawfwa' // vid 为腾讯视频vid
        }
    });
};