广告模块

GB.Ad() 是独立的广告渲染模块。接口请求、缓存、重试和超时由业务实现,Ad 只接收最终广告数组并处理展示、回调及已展示状态。

安装与引入

需要公共桌面窗口时先引入 desktop.js;否则 Ad 使用自身的普通打开方式。

<script src="js/desktop.js"></script>
<script src="js/ad.js"></script>

快速开始

requestAds('home').then(data => {
  GB.Ad()
    .data(data)
    .callback(id => console.log('广告触发:', id))
    .start();
});

链式方法

data(array)设置业务请求完成后的广告数组。
callback(fn) / success(fn)设置广告回调,参数为广告 id。
start() / run()开始处理,data 不是数组时返回 false。
clear(id?)清除指定或全部广告已展示状态,并返回链式对象。

数据结构

const ads = [
  { id: 101, title: '内部活动', icon: 'icon-notify', link: 'activity.html', type: 1 },
  { id: 102, title: '外部网站', link: 'https://example.com', type: 2 },
  { id: 103, title: '源码弹窗', link: '<p>广告内容</p>', type: 3 },
  { id: 104, code: 'ad-home', link: '<p>页面广告</p>', type: 9 }
];
id广告唯一标识,也是弹窗广告永久展示记录的键。
title / icon弹窗标题和完整 SVG Symbol ID。
linktype 1、2 为 URL;type 3、9 为可信 HTML。
type省略时为 1,仅支持 1、2、3、9。
codetype 9 必填,与容器的 data-ad 值匹配。

类型与回调

type: 1内部 iframe 窗口,创建后回调。
type: 2浏览器外部窗口,发起打开后回调。
type: 3HTML 源码弹窗,创建后回调。
type: 9插入匹配容器,用户点击时回调。
<div data-ad="ad-home" aria-label="广告"></div>

type 3 和 9 会写入 innerHTML,只应传入经过过滤的可信内容。

展示记录

广告列表不缓存。type 1、2、3 打开后永久记录广告 ID;type 9 不记录,每次启动都会处理容器。

GB.Ad().clear(101); // 清除指定广告
GB.Ad().clear();    // 清除全部广告状态