当您的项目按照正确的方式接入 FrontJS 之后,您可以使用 FrontJS API 动态调整 FrontJS 监控脚本的行为。 FrontJS Javascript 监控脚本(包含 Web 端 和 微信小程序 端版本)提供了通用的 API 调用方法,当使用我们提供的代码接入项目后可以使用以下方式调用 FrontJS API:
web 端
window.FrontJS.*
微信小程序
getApp().FrontJS.*
动态的添加一条自定义数据,添加后用户数据会附在每一条上报到 FrontJS 的消息上,在查看错误信息流页面最底端的定义数据选项卡中可以看到。
bool addUserData(string key, string value)
key 为自定义数据名字, value 为自定义数据的值,添加成功后会返回 true。
web 端
// 同时上报 Session Storage 存储的用户观看视频的次数
window.FrontJS.addUserData('viewTimes', window.sessionStorage && window.sessionStorage.getItem('viewTimes'))
微信小程序
// 同时上报用户手机品牌
getApp().FrontJS.addUserData('cellphoneBrand', wx.getSystemInfoSync().brand)
动态的删除一条自定义数据,删掉后数据将不再上报 FrontJS。
bool removeUserData(string key)
key 为自定义数据名字且当 key 不存在时不会报错,删除成功后会返回 true。
web 端
// 如果用户拒绝隐私条款 放弃收集敏感数据
if (rejected) {window.FrontJS.removeUserData('viewTimes')}
微信小程序
// 如果用户拒绝隐私条款 放弃收集敏感数据
if (rejected) {getApp().FrontJS.removeUserData('cellphoneBrand')}
尝试执行一个方法,如果出现错误将错误上报 FrontJS ,如果没有错误返回被执行方法的返回值
mixed try(function fn, object context[, mixed arg0[, mixed arg1 [..., argn]]])
fn 为尝试要执行的方法, context 为尝试执行次方法的上下文环境,arg1, arg2, ... , argn 为 fn 传入的参数,如果出现错误将错误上报 FrontJS 并返回 null;如果没有错误返回被执行方法的返回值
web 端
// 在 localStorage 存储数据
function setUserValue (key, value) {
return window.localStorage.setItem(key, values)
}
// 尝试在 localStorage 存储数据
window.FrontJS.try(setUserValue, this, ‘FrontJS’, ‘nice’)
微信小程序
// 除法运算
function division (operant0, operant1) {
return operant0 / operant1
}
// 尝试进行除 0 运算
getApp().FrontJS.try(division, this, 1, 0)
将错误上报给 FrontJS,返回 null。
void catch(mixed e)
e 可以是 字符串 数字 或者是 Javascript 捕获的错误对象;当 e 是错误对象时 FrontJS 会使用错误对象内的 stack trace 信息;若 e 是其它类型 FrontJS 将尝试自己产生 stack trace 信息,该方法返回值为 null。
web 端
// 上报一条错误
window.FrontJS.catch('error found')
// 使用 Javascript 捕获的错误对象
try {
window.undefinedFn()
} catch (e) {
window.FrontJS.catch(e)
}
微信小程序
// 上报一条错误
getApp().FrontJS.catch('error found')
// 使用 Javascript 捕获的错误对象
try {
wx.undefinedFn({})
} catch (e) {
getApp().FrontJS.catch(e)
}
返回一个基于 try API 的复合函数
function composedTry(function fn, object context)
fn 为尝试要执行的方法, context 为尝试执行次方法的上下文环境,返回一个基于 try API 的 复合函数。 例如
// 使用 try API
try(fn, context, arg0_0, arg0_1)
try(fn, context, arg1_0, arg1_1)
try(fn, context, arg2_0, arg2_1)
try(fn, context, arg3_0, arg3_1)
// 使用 composedTry API (等效代码)
let composed = composedTry(fn, context)
composed(arg0_0, arg0_1)
composed(arg1_0, arg1_1)
composed(arg2_0, arg2_1)
composed(arg3_0, arg3_1)
web 端
// 除法运算
function division (operant0, operant1) {
return operant0 / operant1
}
// 构造尝试方法
var composed = window.FrontJS.composedTry(division, this)
// 尝试进行除法运算
composed(4, 2) // 返回 2
composed(2, 1) // 返回 1
composed(1, 0) // 返回 null 并上报一条错误给 FrontJS
微信小程序
// 除法运算
function division (operant0, operant1) {
return operant0 / operant1
}
// 构造尝试方法
let composed = getApp().FrontJS.composedTry(division, this)
// 尝试进行除法运算
composed(4, 2) // 返回 2
composed(2, 1) // 返回 1
composed(1, 0) // 返回 null 并上报一条错误给 FrontJS
添加一个事件侦听器 (Web 端有效)
function addEventListener(string eventType, function handler)
当产生与 eventType 相应的事件时执行 handler 方法, 返回 handler 的引用。
事件列表
事件名 | 说明 | 传入参数描述 |
---|---|---|
enterpage | 当页面 load 完成时触发; 如果配置中 optimisedForSPA 设置为 true 则触发单页面应用优化行为,此时路由跳转后或进入页面时触发此事件 |
传入一个对象。包含以下属性 type: 当前事件名, url: 当前页面 URL, referer: 当前页面的来源页, route: 当前页面路由 (设置 routeMapping 后生效), refererRoute: 当前页面的来源页路由 (设置 routeMapping 后生效) |
web 端
// 单页面应用内路由跳转时也能被 Google Analytics 记录
window.FrontJS.addEventListener('enterpage', function (e) {
// use ga
ga('set', 'page', e.url.split(window.location.host)[1]);
ga('send', 'pageview');
// use gtag
gtag('config', 'TRACK_ID', { 'page_path': e.url.split(window.location.host)[1] });
})
移除一个事件侦听器 (Web 端有效)
function removeEventListener(string eventType, function handler)
移除为 eventType 事件添加 handler 方法, 返回 handler 的引用。
web 端
// 单页面应用内路由跳转时也能被 Google Analytics 记录 保留 handler 以方便后期移除
var handler = window.FrontJS.addEventListener('enterpage', function (e) {
// use ga
ga('set', 'page', e.url.split(window.location.host)[1]);
ga('send', 'pageview');
// use gtag
gtag('config', 'TRACK_ID', { 'page_path': e.url.split(window.location.host)[1] });
})
// 撤销翻页面应用路由跳转 Google Analytics 记录
window.FrontJS.removeEventListener('enterpage', handler)