|
преди 6 дни | |
---|---|---|
src | преди 6 дни | |
.gitignore | преди 1 месец | |
.npmignore | преди 1 месец | |
README.md | преди 2 седмици | |
index.d.ts | преди 1 месец | |
package-lock.json | преди 2 седмици | |
package.json | преди 6 дни | |
pnpm-lock.yaml | преди 2 седмици | |
webpack.config.js | преди 1 месец |
npm install utm-params-extractor-test
// ES6 模块
import UtmTracker from 'utm-params-extractor-test';
// 方法1:使用静态方法直接获取
const utmParams = UtmTracker.get();
console.log('UTM参数:', utmParams);
// 方法2:实例化后获取(适合扩展)
const tracker = new UtmTracker();
const params = tracker.getParams();
// 自行处理数据(例如发送到后端)
fetch('https://your-api.com/track', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
})
.then(response => response.json())
.then(data => console.log('发送成功:', data))
.catch(error => console.error('发送失败:', error));
<script src="dist/main.js"></script>
<script>
// 你的库会挂载在 window.UtmTracker
var utmParams = window.UtmTracker.get();
console.log('UTM参数:', utmParams);
</script>
注意:
library.name
决定,默认是 UtmTracker
。如需自定义全局变量名,请在 webpack.config.js 中修改:
output: {
// ...
library: {
name: 'UtmTracker', // 你想要的全局变量名
type: 'umd',
},
globalObject: 'this',
}
这样 HTML 里就可以直接用 window.UtmTracker.get()
。
new UtmTracker({
reportUrl: 'https://your-server.com/collect',
autoSend: true,
method: 'POST', // 或 'GET'
extra: { custom: 'value' }
});
const tracker = new UtmTracker({ reportUrl: 'https://your-server.com/collect' });
const params = tracker.getParams();
tracker.send(params);
UtmTracker.get({
reportUrl: 'https://your-server.com/collect',
autoSend: true
});
UtmTracker.get()
或 tracker.getParams()
返回对象结构如下:
字段 | 类型 | 说明 |
---|---|---|
utm_source | string | UTM 来源渠道参数(如广告平台、搜索引擎等) |
utm_medium | string | UTM 媒介参数(如 cpc、email、banner 等) |
utm_campaign | string | UTM 活动名称参数 |
utm_term | string | UTM 关键词参数 |
utm_content | string | UTM 内容参数(用于区分广告内容) |
referrer | string | 上一个页面的 URL |
browser | object | 浏览器和设备信息对象(见下表) |
timestamp | string | 获取参数的时间戳(ISO 格式) |
url | string | 当前页面完整 URL |
字段 | 类型 | 说明 |
---|---|---|
isMobile | boolean | 是否为移动端设备 |
browser | string | 浏览器类型(如 Chrome、Safari、Edge、WeChat、HuaweiBrowser 等) |
userAgent | string | 浏览器的 User-Agent 字符串 |
osType | string | 操作系统类型(iOS、Android、HarmonyOS、Unknown) |
osVersion | string | 操作系统版本号(如 16.6、13.0、3.0.0、Unknown) |
{
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "summer_sale",
"utm_term": "shoes",
"utm_content": "ad1",
"referrer": "https://www.example.com/",
"browser": {
"isMobile": true,
"browser": "Chrome",
"userAgent": "Mozilla/5.0 (Linux; Android 13; ...)",
"osType": "Android",
"osVersion": "13"
},
"timestamp": "2024-07-01T12:00:00.000Z",
"url": "https://your-site.com/?utm_source=google&utm_medium=cpc"
}
当后端返回 { downloadUrl, type } 时,自动弹出3秒倒计时弹窗,倒计时结束后自动跳转到 downloadUrl。
new UtmTracker({
reportUrl: 'https://your-server.com/collect',
autoSend: true,
// 只需后端返回 { downloadUrl: '...', type: 'video'|'audio'|'image' },无需额外配置
});
// 后端返回示例: // { // downloadUrl: 'https://your-server.com/file.mp4', // type: 'video' // }
// 前端会自动弹出“即将跳转,3秒...”的弹窗,3秒后自动跳转到 downloadUrl。
如需更多帮助或定制返回内容,请联系作者。
配置项 | 类型 | 说明 | 是否必填 | 默认值 |
---|---|---|---|---|
reportUrl | string | 上报数据的接口地址 | 是 | '' |
autoSend | boolean | 是否在实例化时自动上报一次 | 否 | true |
method | string | 请求方式,支持 'POST' 或 'GET' | 否 | 'POST' |
headers | object | 请求头设置 | 否 | { 'Content-Type': 'application/json' } |
extra | object | 额外自定义参数,会合并进最终上报数据 | 否 | {} |
onParams | function | 获取参数后回调,参数为 params | 否 | null |
onSend | function | 发送成功回调,参数为 (response, params) | 否 | null |
onError | function | 发送失败回调,参数为 (error, params) | 否 | null |
import UtmTracker from 'utm-params-extractor-test';
const tracker = new UtmTracker({
reportUrl: 'https://your-server.com/collect',
autoSend: false,
method: 'POST',
headers: { 'Content-Type': 'application/json' },
extra: { foo: 'bar' },
onParams: params => console.log(params),
onSend: (res, params) => console.log('sent', res, params),
onError: (err, params) => console.error('error', err, params)
});
fingerprintId
字段会自动添加到所有 UTM 参数和上报数据中。const tracker = new UtmTracker({ ... });
const params = await tracker.getParamsAsync();
console.log(params.fingerprintId); // 浏览器唯一指纹
本库自动适配两种场景:
请在你的项目中安装依赖:
npm install @fingerprintjs/fingerprintjs
本库会自动 require 该依赖,无需手动引入。
推荐在 package.json 中声明 peerDependencies:
"peerDependencies": {
"@fingerprintjs/fingerprintjs": ">=4.0.0"
}
请在你的 HTML 中先引入 FingerprintJS,再引入本库:
<script src="https://openfpcdn.io/fingerprintjs/v4"></script>
<script src="dist/your-utm-bundle.js"></script>
本库会自动检测 window.FingerprintJS。
如未正确引入依赖,指纹功能将无法使用,fingerprintId 字段会为空字符串。