广告模块
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(); // 清除全部广告状态