ソースを参照

feat: 支持自存储上报

zhangyuhan 1 年間 前
コミット
c26e5c89ed
6 ファイル変更135 行追加6 行削除
  1. 1 1
      package.json
  2. 30 0
      rollup.config.js
  3. 93 1
      src/easy-use-track.js
  4. 1 1
      src/module/types.js
  5. 2 2
      src/module/utils.js
  6. 8 1
      src/plugins/click.js

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "rollup-js",
-  "version": "1.2.0",
+  "version": "1.3.0",
   "main": "index.js",
   "license": "MIT",
   "scripts": {

+ 30 - 0
rollup.config.js

@@ -34,6 +34,36 @@ export default {
       }
     }
   ],
+  // input: './src/easy-use-track.js',
+  // output: [
+  //   {
+  //     file: 'dist/j-track-core.min.js',
+  //     format: 'umd',
+  //     name: 'JTrackCore',
+  //     sourcemap: false,
+  //     globals: {
+  //       jquery: '$'
+  //     }
+  //   },
+  //   {
+  //     file: 'dist/j-track-core.amd.min.js',
+  //     format: 'amd',
+  //     name: 'JTrackCore',
+  //     sourcemap: false,
+  //     globals: {
+  //       jquery: '$'
+  //     }
+  //   },
+  //   {
+  //     file: 'dist/j-track-core.es.min.js',
+  //     format: 'es',
+  //     name: 'JTrackCore',
+  //     sourcemap: false,
+  //     globals: {
+  //       jquery: '$'
+  //     }
+  //   }
+  // ],
   plugins: [
     resolve(),
     commonjs(),

+ 93 - 1
src/easy-use-track.js

@@ -13,7 +13,9 @@ class EasyUse {
     const {
       dataSourceBase = '//cdn-common.jianyu360.com/track/json/',
       iframeSupportEnabled = true,
-      iframeSupportLink = '/test/huiju'
+      iframeSupportLink = '/test/huiju',
+      selfTrackURL = '/personnel/statistics',
+      selfTrackSupportEnabled = true
     } = options
 
     // 默认配置文件、版本号读取
@@ -28,6 +30,8 @@ class EasyUse {
       version,
       iframeSupportEnabled,
       iframeSupportLink,
+      selfTrackURL,
+      selfTrackSupportEnabled,
       upWaitStep: 200
     }, options)
     this.json = []
@@ -140,6 +144,42 @@ class EasyUse {
     const _this = this
       const jyEventTrack = new Track()
       jyEventTrack.$subscribe.$on('CLICK-TRACK', function (transformedData, pageInfo) {
+        if (_this.config.selfTrackSupportEnabled) {
+          try {
+            const params = Object.assign({
+              c_breakername: transformedData.data.content.substr(0, 15),
+              c_pagename: pageInfo.href.title,
+              c_platform: pageInfo.platform,
+              c_pageid: pageInfo.id,
+              c_url: pageInfo.href.href,
+              c_breakerid: transformedData.key,
+              c_productname: '',
+              c_desc: '',
+              c_title: pageInfo.href.title,
+              date: new Date(transformedData.data.event_time)
+            }, _this.getNowPageInfo('click'))
+            _this.sendSelfTrack({
+              action_id: 'c_jyclick',
+              action_type: 'events',
+              breaker_id: params.c_breakerid,
+              breaker_name: params.c_breakername,
+              product_name: params.c_productname,
+              page_id: params.c_pageid,
+              page_name: params.c_pagename,
+              desc: params.c_desc,
+              // other
+              platform: params.c_platform,
+              url: params.c_url,
+              title: params.c_title,
+              date: params.date,
+              source: '',
+              chain_name: 'data_analysis'
+            })
+          } catch (e) {
+            console.warn('!! Check Track JS Error 100 !!')
+          }
+        }
+
         const tracker = _this.useClabTracker()
         if (tracker && tracker.track) {
           try {
@@ -240,6 +280,24 @@ class EasyUse {
       }
     }
 
+    if (this.config.selfTrackSupportEnabled) {
+      this.sendSelfTrack({
+        action_id: 'c_jy_open_page',
+        action_type: 'events',
+        product_name: params?.c_productname,
+        page_id: params?.c_pageid,
+        page_name: params?.c_pagename,
+        desc: params?.c_desc,
+        // other
+        platform: params.c_platform,
+        url: params.c_url,
+        title: params.c_title,
+        date: new Date(),
+        source: '',
+        chain_name: 'data_analysis'
+      })
+    }
+
     if (tracker && tracker.track) {
       try {
         tracker.track('c_jy_open_page', params)
@@ -353,6 +411,40 @@ class EasyUse {
     xhr.send()
   }
 
+  sendSelfTrack (params) {
+    this.sendSelfPostRequest(this.config.selfTrackURL, params, function () {})
+  }
+  sendSelfPostRequest (url, params, successCallback) {
+    var xhr = new XMLHttpRequest();
+    xhr.open("POST", url, true);
+    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+    xhr.setRequestHeader("apiKey", "HhYvHgAGQV9fWxEDLw8HFw==");
+
+    // Convert the params object to a URL-encoded string
+    var paramsString = '';
+    for (var key in params) {
+      if (params.hasOwnProperty(key)) {
+        paramsString += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&';
+      }
+    }
+    // Remove the trailing '&'
+    paramsString = paramsString.slice(0, -1);
+
+    xhr.onreadystatechange = function () {
+      if (xhr.readyState === 4) {
+        if (xhr.status === 200) {
+          // Call the success callback with the response text
+          successCallback(xhr.responseText);
+        } else {
+          // Handle error
+          console.warn("Request failed with status: " + xhr.status);
+        }
+      }
+    };
+
+    xhr.send(paramsString);
+  }
+
   /**
    * 根据 name 获取 Cookie
    * @param name

+ 1 - 1
src/module/types.js

@@ -3,6 +3,6 @@ export const Subscribe = {
 }
 
 export const SDK_INFO = {
-  VERSION: '1.2.0',
+  VERSION: '1.3.0',
   PREFIX: 'JyTrack'
 }

+ 2 - 2
src/module/utils.js

@@ -46,9 +46,9 @@ export function getElementInfo(e, target) {
  * @returns {string}
  * */
 function getText(el, level = 1) {
-  let nowStr = (el.innerText || '').trim()
+  let nowStr = (el?.innerText || '').trim()
   if (nowStr === '' && level > 0) {
-    return getText(el.parentNode, --level)
+    return getText(el?.parentNode, --level)
   } else {
     return nowStr.replace(/[\n|\s|\t|\b]/g, '').substr(0, 30)
   }

+ 8 - 1
src/plugins/click.js

@@ -31,7 +31,14 @@ export default class ClickPlugin extends TrackPlugins {
           }
         })
       })
-      document.body.addEventListener('click', clickFn, false)
+
+      if (document && document.body) {
+        document.body.addEventListener('click', clickFn, false)
+      } else {
+        document.addEventListener('DOMContentLoaded', function () {
+          document.body.addEventListener('click', clickFn, false)
+        })
+      }
     } else {
       // _global.logger.debug('未检测到Jq')
       window.onload = () => {