百度OCPC推广埋点回传bd_vid或invite自定义值,SEM实现全局储存自定义参数值!登录状态自定义url按钮href值

39 次浏览次阅读
没有评论

百度OCPC推广之不同的页面跳转储存bd_vid值,以及自定义invite参数一并回传JS代码。

百度OCPC推广埋点回传bd_vid或invite自定义值,SEM实现全局储存自定义参数值!登录状态自定义url按钮href值

将SEM的URL手动埋点,存入localStorage,方便后面在使用中调用!

自动获取URL中传过来的 invite 和 bd_vid值

(bd_vid通常是百度OCPT推广时自动添加的参数)

/**
 * 
 * 百度埋点
 * 函数打包
 * 记录invite值 和 bd_vid值
 * 日期:2025-5-28 MAOMAO
 */
function handleSemTracking(options = {}) {
  const TRACK_KEYS = options.keys || ['invite', 'bd_vid'];
  const EXPIRE_MS = options.expireMs || 24 * 60 * 60 * 1000; // 默认1天

  // 辅助函数:获取 query 参数
  function getQueryParam(param) {
    const urlParams = new URLSearchParams(window.location.search);
    return urlParams.get(param);
  }

  // 存 key 对应的值
  function setKey(key, value) {
    localStorage.setItem(`sem_${key}`, value);
    localStorage.setItem(`sem_${key}_time`, Date.now().toString());
  }

  // 获取 key 对应的值(处理过期)
  function getKey(key) {
    const timestamp = localStorage.getItem(`sem_${key}_time`);
    if (!timestamp) return null;
    if ((Date.now() - parseInt(timestamp, 10)) > EXPIRE_MS) {
      clearKey(key);
      return null;
    }
    return localStorage.getItem(`sem_${key}`);
  }

  function clearKey(key) {
    localStorage.removeItem(`sem_${key}`);
    localStorage.removeItem(`sem_${key}_time`);
  }

  function init() {
    TRACK_KEYS.forEach(key => {
      const val = getQueryParam(key);
      if (val) {
        setKey(key, val);
      } else {
        getKey(key); // 触发过期检测
      }
    });
  }

  init();

  // 返回接口
  return {
    getAll: () => {
      const result = {};
      TRACK_KEYS.forEach(key => {
        const val = getKey(key);
        if (val) result[key] = val;
      });
      return result;
    },
    get: getKey,
    clear: () => {
      TRACK_KEYS.forEach(clearKey);
    }
  };
}

handleSemTracking(); // 先执行埋点追踪并存入 localStorage
//百度埋点 MAOMAO end

登陆状态-未登录

应用场景:将全局类名带有ann_button的<a>标签中 href属性值 增加invite和bd_vid参数

// 未登录状态 - 按钮拼接 invite 和 bd_vid 参数 MAOMAO
            const buttons = document.querySelectorAll('.ann_button');
            const inviteValue = localStorage.getItem('sem_invite');
            const bdVidValue = localStorage.getItem('sem_bd_vid');
            buttons.forEach(button => {
                const href = button.getAttribute('href');
                if (!href) return;

                try {
                    const url = new URL(href, window.location.origin); // 兼容相对路径
                    let changed = false;

                    if (inviteValue) {
                        url.searchParams.set('invite', inviteValue);
                        changed = true;
                    }

                    if (bdVidValue) {
                        url.searchParams.set('bd_vid', bdVidValue);
                        changed = true;
                    }

                    if (changed) {
                        button.setAttribute('href', url.toString());
                    }
                } catch (e) {
                    console.warn('无效 href,跳过该按钮:', href);
                }
            });
            // 未登录状态 - 按钮拼接 invite 和 bd_vid 参数 MAOMAO end

登陆状态-已登录

应用场景:将带callback参数里的url直接赋给ann_button类里的href地址

// 已登录状态-按钮跳转应用广场 MAOMAO
            const buttons = document.querySelectorAll('.ann_button');
            buttons.forEach(button => {
                const href = button.getAttribute('href');
                const url = new URL(href);
                const callback = url.searchParams.get('callback');

                if (callback) {
                // 构造新的 URL,包含 callback 后面的所有参数
                const newHref = new URL(callback);
                // 把原 href 中除了 callback 的其他参数都加到新 URL 上
                url.searchParams.forEach((value, key) => {
                    if (key !== 'callback') {
                    newHref.searchParams.set(key, value);
                    }
                });
                button.setAttribute('href', newHref.toString());
                }
            });
            //MAOMAO end

开发人员:李辉

应用场景:百度SEM投放手动埋点

后续的API回传可参考文档:百度API参考文档地址

百度OCPC推广埋点回传bd_vid或invite自定义值,SEM实现全局储存自定义参数值!登录状态自定义url按钮href值
正文完
 0
评论(没有评论)

辉哥

一言一句话
-「
最新文章
TikTok直播能赚钱吗?赚到的美金怎么提现?

TikTok直播能赚钱吗?赚到的美金怎么提现?

TikTok直播能赚钱吗?赚到的美金怎么提现详解(2026最新) TikTok作为全球最火的短视频平台,不仅是...
京东618消费券什么时候发?怎么正确使用?

京东618消费券什么时候发?怎么正确使用?

京东618消费券什么时候发?怎么正确使用? 每年京东618都是全年最值得囤货的购物节点,海量消费券直接让到手价...
淘宝网店可以从哪里购买?平台靠谱吗?

淘宝网店可以从哪里购买?平台靠谱吗?

淘宝网店可以从哪里购买?平台靠谱吗? 在电商时代,越来越多的人希望通过淘宝开店实现创业梦想。但从零开始建店需要...
淘宝全球购店铺如何转让?具体操作步骤是什么?

淘宝全球购店铺如何转让?具体操作步骤是什么?

淘宝全球购店铺如何转让?具体操作步骤是什么? 近年来,跨境电商快速发展,淘宝全球购作为阿里巴巴旗下重要的跨境平...
出售淘宝三钻店铺要什么条件?流程复杂吗?

出售淘宝三钻店铺要什么条件?流程复杂吗?

出售淘宝三钻店铺要什么条件?流程复杂吗? 在电商创业热潮中,很多新手卖家都希望快速起步,避免从零开始漫长的信誉...
2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗?

2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗?

2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗? 2026年,淘宝平台竞争更加激烈,很多新手创业者选择直接接...
淘宝闪购入口在哪里?免单玩法怎么操作?

淘宝闪购入口在哪里?免单玩法怎么操作?

淘宝闪购入口在哪里?免单玩法怎么操作? 淘宝闪购是淘宝App上的一级核心频道,主打限时优惠、品牌好物和快速送达...
2026年1688店铺怎么转让?开一家1688要多少钱?

2026年1688店铺怎么转让?开一家1688要多少钱?

2026年1688店铺怎么转让?开一家1688要多少钱? 在2026年,1688作为阿里巴巴旗下的B2B批发平...
淘宝闪购免单卡和请客卡怎么获得?

淘宝闪购免单卡和请客卡怎么获得?

淘宝闪购免单卡和请客卡怎么获得? 在淘宝购物时,最让人兴奋的莫过于各种省钱福利,尤其是闪购频道的免单卡和请客卡...
2026年淘宝开店必须实名认证吗?在哪里查看认证?

2026年淘宝开店必须实名认证吗?在哪里查看认证?

2026年淘宝开店必须实名认证吗?在哪里查看认证? 2026年想在淘宝开店的卖家越来越多,但很多人对实名认证规...
2026年淘宝618怎么买最便宜?比平时能省多少?

2026年淘宝618怎么买最便宜?比平时能省多少?

2026年淘宝618怎么买最便宜?比平时能省多少? 2026年淘宝618作为上半年最大的电商促销活动,又一次成...