JS实现点击事件统计

前端实现数据追踪和上报的JavaScript方法 前端埋点是一种通过在前端代码中插入特定的追踪代码来记录用户行为的技术。这些追踪代码通常以事件的形式存在,当用户执行某些操作(如点击按钮、提交表单等)时,这些代码将被触发并执行相应的操作,如记录事件信息并将其发送到后端服务器进行保存和分析。实现前端埋点通常需要考虑以下几个方面:选择合适的事件类型:确定要追踪的用户行为事件类型,如点击、页面加载、表单提交等。选择合适的触发时机:确定何时触发追踪代码,通常是在用户执行相关操作时触发。收集相关数据:收集与事件相关的数据,如页面URL、操作时间、设备信息等。 阅读详情

JS实现点击事件统计

原创  2016年06月15日 09:53:55
  • 2722

JS实现网站点击事件的统计功能。

[javascript]  view plain  copy
  1. /** 
  2.  * 点击事件上报,分为立即上报和延时上报,延时上报通过cookie存储。 
  3.  *  
  4.  * 一、配置参数,主要用于定义上报的一些配置信息。通过在外部定义_clickc对象重置参数。 
  5.  *     参数名称       类型          默认值             说明 
  6.  *     selector:      string        '_click_rp'        点击触发的选择器,支持ID、class 
  7.  *     prefix:        string        '_rp_'             需要上报的参数属性名前缀,如_rp_type,表示要上报type参数的值 
  8.  *     cookie:        string        '_click_rp'        延迟上报时的cookie名称 
  9.  *     domain:        string        '.skye.com'    cookie存储的域名(可以通过使用的网站来获得) 
  10.  *     delay:         boolean       false              是否延迟上报,延迟上报通过cookie实现 
  11.  *     delay_attr:    string        _delay             标签中指定是否延迟上报,优先级最高,ture延时,其他不延时。 
  12.  *      
  13.  * 二、外部参数,主要用于定义上报的参数。通过在外部定义_clickq数组增加参数。 
  14.  * 
  15.  * 三、标签参数,使用前缀_rp_定义,上报的时候会将所有_rp_开头的参数上报。参数的格式分为两种,1种纯字符,1中回调函数。 
  16.  * <a class="_click_rp" href="" _rp_a="aa" _rp_b="bb">a</a>,表示上报时的参数为a=aa&b=bb 
  17.  * 1,纯字符,直接定义字符,表示需要上传参数的值。 
  18.  * 2,回调函数,以javascript:开头。只需定义函数体,在函数体中返回参数的值。 
  19.  * 如,<a href="/qa_question/press.html" id="ques_search_btn" class="_click_rp" _rp_act="javascript:if($('#ques_search_btn').text()=='提问'){return 'act_qa_ques';}else{return 'act_search';}"><span>提问</span></a> 
  20.  * 
  21.  * 四、延时上报,分为三种优先级,如下由高到低 
  22.  * 1,标签属性_delay是否指定为true,如果是表示延迟上报。 
  23.  * 2,是否为特定标签,如a标签本窗口打开(target等于"_self"或空),submit按钮。 
  24.  * 3,配置参数中指定的delay参数。 
  25.  *  
  26.  * 五、支持:需要依赖jQuery插件。 
  27.  *  
  28.  * 六、使用案列 
  29.  * 1,引入JS 
  30.  * var _clickq = _clickq || []; 
  31.  * _clickq.push(['param1', 'value1']); 
  32.  * var _clickc = {selector:'_click_rps'}; 
  33.  * (function() { 
  34.  *  var click = document.createElement("script"); 
  35.  *  click.src = "//cache.skye.com/js/lib/stat/click.js"; 
  36.  *  var s = document.getElementsByTagName("script")[0];  
  37.  *  s.parentNode.insertBefore(click, s); 
  38.  * })(); 
  39.  *  
  40.  * 2,定义选择器和上传参数 
  41.  * 如,<a class="_click_rp" href="" _rp_a="aa" _rp_b="bb">a</a> 
  42.  */  
  43. (function () {  
  44.     // 默认参数  
  45.     var options = {  
  46.         selector: '_click_rp',  
  47.         prefix: '_rp_',  
  48.         cookie: '_click_rp',  
  49.         domain: '.skye.com',  
  50.         delay: false,  
  51.         delay_attr: '_delay'  
  52.     };  
  53.   
  54.     var params = {};  
  55.     var _params = {};  
  56.     var clickObj = null; // 当前点击对象  
  57.   
  58.     // 获得对象  
  59.     var getObject = function(selector) {  
  60.         if (typeof(selector) == 'object') {  
  61.             return selector;  
  62.         } else {  
  63.             var obj = $('#'+selector);  
  64.             if (obj.length) {  
  65.                 return obj;  
  66.             }  
  67.             obj = $('.'+selector);  
  68.             if (obj.length) {  
  69.                 return obj;  
  70.             }  
  71.             return null;  
  72.         }  
  73.     }  
  74.     // 获得选择器  
  75.     var getSelector = function(selector) {  
  76.         return '#' + selector + ',.' + selector;  
  77.     }  
  78.     // 操作cookie函数  
  79.     var getCookie = function(c_name) {  
  80.         if (document.cookie.length>0) {  
  81.             c_start = document.cookie.indexOf(c_name + "=")  
  82.             if (c_start!=-1) {   
  83.                 c_start=c_start + c_name.length+1   
  84.                 c_end=document.cookie.indexOf(";",c_start)  
  85.                 if (c_end==-1) c_end=document.cookie.length  
  86.                 return unescape(document.cookie.substring(c_start,c_end))  
  87.             }  
  88.         }  
  89.         return "";  
  90.     }  
  91.     var setCookie = function(c_name,value,expiredays,path,domain) {  
  92.         var exdate = new Date()  
  93.         exdate.setDate(exdate.getDate()+expiredays)  
  94.         var cookie = c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());  
  95.         if (path) cookie = cookie + ";path=" + path;  
  96.         if (domain) cookie = cookie + ";domain=" + domain;  
  97.         document.cookie = cookie;  
  98.     }  
  99.   
  100.     // 获得标签中的参数  
  101.     var getAttrParam = function() {  
  102.         if ( clickObj ) {  
  103.             var attrs = clickObj.get(0).attributes;  
  104.             $.each(attrs, function(i) {  
  105.                 var name = attrs[i].name;  
  106.                 if ( name.indexOf(options.prefix) == 0 ) {  
  107.                     name = name.replace(options.prefix, '');  
  108.                     var value = attrs[i].value;  
  109.                     if ( value.indexOf('javascript:') == 0 ) {  
  110.                         // 执行js获得参数值  
  111.                         value = value.replace('javascript:', '');  
  112.                         eval('var valFun = function() {'+ value +'};');  
  113.                         value = valFun();  
  114.                     }  
  115.                     params[name] = value;  
  116.                 }  
  117.             });  
  118.         }  
  119.     }  
  120.     // 获得默认参数  
  121.     var getDefaultParam = function() {  
  122.         if(document) {  
  123.             params.url = document.URL || '';  
  124.             params.referrer = document.referrer || '';  
  125.         }  
  126.         // 时间  
  127.         var date = new Date();  
  128.         params.ltime = date.getTime() / 1000;  
  129.   
  130.         // 时间戳  
  131.         params.t = date.getTime();  
  132.     }  
  133.     var getParamStr = function() {  
  134.         getAttrParam();  
  135.         getDefaultParam();  
  136.         // 合并配置参数  
  137.         for(var key in _params) {  
  138.             params[key] = _params[key];  
  139.         }  
  140.         //拼接参数串  
  141.         var args = '';   
  142.         for(var i in params) {  
  143.             if(args != '') {  
  144.                 args += '&';  
  145.             }     
  146.             args += i + '=' + encodeURIComponent(params[i]);  
  147.         }  
  148.         return args;  
  149.     }  
  150.   
  151.     // 清空参数  
  152.     var clearParam = function() {  
  153.         params = {};  
  154.     }  
  155.   
  156.     // 是否立即上报,如果跳转页面,则计入延时上报  
  157.     var getIsDelay = function() {  
  158.         if ( clickObj ) {  
  159.             // 有具体指定  
  160.             if ( clickObj.attr(options.delay_attr) == 'true' ) {  
  161.                 return true;  
  162.             }  
  163.             // 特定标签  
  164.             // a标签  
  165.             if ( clickObj.is('a') ) {  
  166.                 if ( clickObj.attr('href').indexOf('javascript:') == 0 ) {  
  167.                     return false;  
  168.                 }  
  169.                 if ( clickObj.attr('target') && clickObj.attr('target') != '_self' ) {  
  170.                     return false;  
  171.                 }  
  172.                 return true;  
  173.             }  
  174.             // submit按钮  
  175.             if ( (clickObj.is('input') || clickObj.is('button')) && clickObj.attr('type') == 'submit' ) {  
  176.                 return true;  
  177.             }  
  178.         }  
  179.         return options.delay;  
  180.     }  
  181.       
  182.     // 加入cookie,下次上报  
  183.     var setDelayCookie = function() {  
  184.         // 获得参数  
  185.         var args = getParamStr();  
  186.         var cookieStr = getCookie(options.cookie);  
  187.         if ( cookieStr == '' ) {  
  188.             cookieStr = args;  
  189.         } else {  
  190.             cookieStr = cookieStr + ',' + args;  
  191.         }  
  192.         setCookie(options.cookie, cookieStr, 7, '/', options.domain);  
  193.         clearParam();  
  194.     }  
  195.   
  196.     // 上报cookie  
  197.     var rpCookie = function() {  
  198.         // 获得cookie,循环操作  
  199.         var cookieStr = getCookie(options.cookie);  
  200.         if ( cookieStr ) {  
  201.             var cookieArr = cookieStr.split(',');  
  202.             for(var key in cookieArr){    
  203.                 rpClick(cookieArr[key]);  
  204.             }    
  205.             setCookie(options.cookie, '', 7, '/', options.domain);  
  206.         }  
  207.     }  
  208.   
  209.     // 上报  
  210.     var rpClick = function(args) {  
  211.         if ( args == undefined ) {  
  212.             args = getParamStr();  
  213.         }  
  214.         var img = new Image(1, 1);  
  215.         img.src = 'http://data.skye.com/stat/click?' + args;  
  216.         console.info(img.src);  
  217.         clearParam();  
  218.     }  
  219.   
  220.     // js上报函数  
  221.     var rpComm = function(obj) {  
  222.         console.info('click');  
  223.         clickObj = obj;  
  224.         if ( getIsDelay() ) {  
  225.             setDelayCookie();  
  226.         } else {  
  227.             rpClick();  
  228.         }  
  229.     }  
  230.   
  231.     //解析外部配置  
  232.     if(_clickc) {  
  233.         for(var i in _clickc) {  
  234.             options[i] = _clickc[i];  
  235.         }     
  236.     }  
  237.       
  238.     //解析外部参数  
  239.     if(_clickq) {  
  240.         for(var i in _clickq) {  
  241.             _params[_clickq[i][0]] = _clickq[i][1];  
  242.         }  
  243.     }  
  244.   
  245.     // 提供外部js函数  
  246.     $.rpComm = function(obj) {  
  247.         rpComm(obj);  
  248.     }  
  249.     $.fn.rpComm = function() {  
  250.         rpComm($(this));  
  251.     }  
  252.   
  253.     // cookie中的上报  
  254.     rpCookie();  
  255.   
  256.     // 初始化信息  
  257.     var _time = new Date().valueOf();  
  258.     var selector = getSelector(options.selector);  
  259.     $('body').delegate(selector,'click',function() {  
  260.         // 连续点击限制  
  261.         if(new Date().valueOf() - _time < 300) {  
  262.             return;  
  263.         }  
  264.         _time = new Date().valueOf();  
  265.         rpComm($(this));  
  266.     });  
  267. })();  
原创  2016年06月15日 09:53:55
  • 2722

JS实现网站点击事件的统计功能。

[javascript]  view plain  copy
  1. /** 
  2.  * 点击事件上报,分为立即上报和延时上报,延时上报通过cookie存储。 
  3.  *  
  4.  * 一、配置参数,主要用于定义上报的一些配置信息。通过在外部定义_clickc对象重置参数。 
  5.  *     参数名称       类型          默认值             说明 
  6.  *     selector:      string        '_click_rp'        点击触发的选择器,支持ID、class 
  7.  *     prefix:        string        '_rp_'             需要上报的参数属性名前缀,如_rp_type,表示要上报type参数的值 
  8.  *     cookie:        string        '_click_rp'        延迟上报时的cookie名称 
  9.  *     domain:        string        '.skye.com'    cookie存储的域名(可以通过使用的网站来获得) 
  10.  *     delay:         boolean       false              是否延迟上报,延迟上报通过cookie实现 
  11.  *     delay_attr:    string        _delay             标签中指定是否延迟上报,优先级最高,ture延时,其他不延时。 
  12.  *      
  13.  * 二、外部参数,主要用于定义上报的参数。通过在外部定义_clickq数组增加参数。 
  14.  * 
  15.  * 三、标签参数,使用前缀_rp_定义,上报的时候会将所有_rp_开头的参数上报。参数的格式分为两种,1种纯字符,1中回调函数。 
  16.  * <a class="_click_rp" href="" _rp_a="aa" _rp_b="bb">a</a>,表示上报时的参数为a=aa&b=bb 
  17.  * 1,纯字符,直接定义字符,表示需要上传参数的值。 
  18.  * 2,回调函数,以javascript:开头。只需定义函数体,在函数体中返回参数的值。 
  19.  * 如,<a href="/qa_question/press.html" id="ques_search_btn" class="_click_rp" _rp_act="javascript:if($('#ques_search_btn').text()=='提问'){return 'act_qa_ques';}else{return 'act_search';}"><span>提问</span></a> 
  20.  * 
  21.  * 四、延时上报,分为三种优先级,如下由高到低 
  22.  * 1,标签属性_delay是否指定为true,如果是表示延迟上报。 
  23.  * 2,是否为特定标签,如a标签本窗口打开(target等于"_self"或空),submit按钮。 
  24.  * 3,配置参数中指定的delay参数。 
  25.  *  
  26.  * 五、支持:需要依赖jQuery插件。 
  27.  *  
  28.  * 六、使用案列 
  29.  * 1,引入JS 
  30.  * var _clickq = _clickq || []; 
  31.  * _clickq.push(['param1', 'value1']); 
  32.  * var _clickc = {selector:'_click_rps'}; 
  33.  * (function() { 
  34.  *  var click = document.createElement("script"); 
  35.  *  click.src = "//cache.skye.com/js/lib/stat/click.js"; 
  36.  *  var s = document.getElementsByTagName("script")[0];  
  37.  *  s.parentNode.insertBefore(click, s); 
  38.  * })(); 
  39.  *  
  40.  * 2,定义选择器和上传参数 
  41.  * 如,<a class="_click_rp" href="" _rp_a="aa" _rp_b="bb">a</a> 
  42.  */  
  43. (function () {  
  44.     // 默认参数  
  45.     var options = {  
  46.         selector: '_click_rp',  
  47.         prefix: '_rp_',  
  48.         cookie: '_click_rp',  
  49.         domain: '.skye.com',  
  50.         delay: false,  
  51.         delay_attr: '_delay'  
  52.     };  
  53.   
  54.     var params = {};  
  55.     var _params = {};  
  56.     var clickObj = null; // 当前点击对象  
  57.   
  58.     // 获得对象  
  59.     var getObject = function(selector) {  
  60.         if (typeof(selector) == 'object') {  
  61.             return selector;  
  62.         } else {  
  63.             var obj = $('#'+selector);  
  64.             if (obj.length) {  
  65.                 return obj;  
  66.             }  
  67.             obj = $('.'+selector);  
  68.             if (obj.length) {  
  69.                 return obj;  
  70.             }  
  71.             return null;  
  72.         }  
  73.     }  
  74.     // 获得选择器  
  75.     var getSelector = function(selector) {  
  76.         return '#' + selector + ',.' + selector;  
  77.     }  
  78.     // 操作cookie函数  
  79.     var getCookie = function(c_name) {  
  80.         if (document.cookie.length>0) {  
  81.             c_start = document.cookie.indexOf(c_name + "=")  
  82.             if (c_start!=-1) {   
  83.                 c_start=c_start + c_name.length+1   
  84.                 c_end=document.cookie.indexOf(";",c_start)  
  85.                 if (c_end==-1) c_end=document.cookie.length  
  86.                 return unescape(document.cookie.substring(c_start,c_end))  
  87.             }  
  88.         }  
  89.         return "";  
  90.     }  
  91.     var setCookie = function(c_name,value,expiredays,path,domain) {  
  92.         var exdate = new Date()  
  93.         exdate.setDate(exdate.getDate()+expiredays)  
  94.         var cookie = c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());  
  95.         if (path) cookie = cookie + ";path=" + path;  
  96.         if (domain) cookie = cookie + ";domain=" + domain;  
  97.         document.cookie = cookie;  
  98.     }  
  99.   
  100.     // 获得标签中的参数  
  101.     var getAttrParam = function() {  
  102.         if ( clickObj ) {  
  103.             var attrs = clickObj.get(0).attributes;  
  104.             $.each(attrs, function(i) {  
  105.                 var name = attrs[i].name;  
  106.                 if ( name.indexOf(options.prefix) == 0 ) {  
  107.                     name = name.replace(options.prefix, '');  
  108.                     var value = attrs[i].value;  
  109.                     if ( value.indexOf('javascript:') == 0 ) {  
  110.                         // 执行js获得参数值  
  111.                         value = value.replace('javascript:', '');  
  112.                         eval('var valFun = function() {'+ value +'};');  
  113.                         value = valFun();  
  114.                     }  
  115.                     params[name] = value;  
  116.                 }  
  117.             });  
  118.         }  
  119.     }  
  120.     // 获得默认参数  
  121.     var getDefaultParam = function() {  
  122.         if(document) {  
  123.             params.url = document.URL || '';  
  124.             params.referrer = document.referrer || '';  
  125.         }  
  126.         // 时间  
  127.         var date = new Date();  
  128.         params.ltime = date.getTime() / 1000;  
  129.   
  130.         // 时间戳  
  131.         params.t = date.getTime();  
  132.     }  
  133.     var getParamStr = function() {  
  134.         getAttrParam();  
  135.         getDefaultParam();  
  136.         // 合并配置参数  
  137.         for(var key in _params) {  
  138.             params[key] = _params[key];  
  139.         }  
  140.         //拼接参数串  
  141.         var args = '';   
  142.         for(var i in params) {  
  143.             if(args != '') {  
  144.                 args += '&';  
  145.             }     
  146.             args += i + '=' + encodeURIComponent(params[i]);  
  147.         }  
  148.         return args;  
  149.     }  
  150.   
  151.     // 清空参数  
  152.     var clearParam = function() {  
  153.         params = {};  
  154.     }  
  155.   
  156.     // 是否立即上报,如果跳转页面,则计入延时上报  
  157.     var getIsDelay = function() {  
  158.         if ( clickObj ) {  
  159.             // 有具体指定  
  160.             if ( clickObj.attr(options.delay_attr) == 'true' ) {  
  161.                 return true;  
  162.             }  
  163.             // 特定标签  
  164.             // a标签  
  165.             if ( clickObj.is('a') ) {  
  166.                 if ( clickObj.attr('href').indexOf('javascript:') == 0 ) {  
  167.                     return false;  
  168.                 }  
  169.                 if ( clickObj.attr('target') && clickObj.attr('target') != '_self' ) {  
  170.                     return false;  
  171.                 }  
  172.                 return true;  
  173.             }  
  174.             // submit按钮  
  175.             if ( (clickObj.is('input') || clickObj.is('button')) && clickObj.attr('type') == 'submit' ) {  
  176.                 return true;  
  177.             }  
  178.         }  
  179.         return options.delay;  
  180.     }  
  181.       
  182.     // 加入cookie,下次上报  
  183.     var setDelayCookie = function() {  
  184.         // 获得参数  
  185.         var args = getParamStr();  
  186.         var cookieStr = getCookie(options.cookie);  
  187.         if ( cookieStr == '' ) {  
  188.             cookieStr = args;  
  189.         } else {  
  190.             cookieStr = cookieStr + ',' + args;  
  191.         }  
  192.         setCookie(options.cookie, cookieStr, 7, '/', options.domain);  
  193.         clearParam();  
  194.     }  
  195.   
  196.     // 上报cookie  
  197.     var rpCookie = function() {  
  198.         // 获得cookie,循环操作  
  199.         var cookieStr = getCookie(options.cookie);  
  200.         if ( cookieStr ) {  
  201.             var cookieArr = cookieStr.split(',');  
  202.             for(var key in cookieArr){    
  203.                 rpClick(cookieArr[key]);  
  204.             }    
  205.             setCookie(options.cookie, '', 7, '/', options.domain);  
  206.         }  
  207.     }  
  208.   
  209.     // 上报  
  210.     var rpClick = function(args) {  
  211.         if ( args == undefined ) {  
  212.             args = getParamStr();  
  213.         }  
  214.         var img = new Image(1, 1);  
  215.         img.src = 'http://data.skye.com/stat/click?' + args;  
  216.         console.info(img.src);  
  217.         clearParam();  
  218.     }  
  219.   
  220.     // js上报函数  
  221.     var rpComm = function(obj) {  
  222.         console.info('click');  
  223.         clickObj = obj;  
  224.         if ( getIsDelay() ) {  
  225.             setDelayCookie();  
  226.         } else {  
  227.             rpClick();  
  228.         }  
  229.     }  
  230.   
  231.     //解析外部配置  
  232.     if(_clickc) {  
  233.         for(var i in _clickc) {  
  234.             options[i] = _clickc[i];  
  235.         }     
  236.     }  
  237.       
  238.     //解析外部参数  
  239.     if(_clickq) {  
  240.         for(var i in _clickq) {  
  241.             _params[_clickq[i][0]] = _clickq[i][1];  
  242.         }  
  243.     }  
  244.   
  245.     // 提供外部js函数  
  246.     $.rpComm = function(obj) {  
  247.         rpComm(obj);  
  248.     }  
  249.     $.fn.rpComm = function() {  
  250.         rpComm($(this));  
  251.     }  
  252.   
  253.     // cookie中的上报  
  254.     rpCookie();  
  255.   
  256.     // 初始化信息  
  257.     var _time = new Date().valueOf();  
  258.     var selector = getSelector(options.selector);  
  259.     $('body').delegate(selector,'click',function() {  
  260.         // 连续点击限制  
  261.         if(new Date().valueOf() - _time < 300) {  
  262.             return;  
  263.         }  
  264.         _time = new Date().valueOf();  
  265.         rpComm($(this));  
  266.     });  
  267. })();  
JS实现点击事件统计的简单实例 下面小编就为大家带来一篇JS实现点击事件统计的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

相关推荐

告别Qt Creator!VSCode + QMake + MinGW:从零搭建高效Qt开发环境

本文详细介绍了如何使用VSCode替代Qt Creator搭建高效的Qt开发环境,涵盖VSCode配置、QMake与MinGW集成、智能提示优化及构建调试技巧。通过实战案例展示如何提升开发效率30%以上,特别适合中大型Qt项目开发。

weixin_30466039的博客 244

JS统计页面访问次数并传递可选参数

主题 概要 JS 用JS统计网站页面的访问次数,并传递可选参数 编辑 时间 新建 20171218 序号 参考资料 1 网站有些页面需要统计用户的访问次数,下面是一个简单的JS,引用在需要统计的页面类。 网站上有个Handler处理提交来的信息,只是简单的入库处理,用户每访问或者刷新一次,就有一条记录插入库中。JS如下:/**

shaozhenged的专栏 2953

AMBA总线—APB总线协议详解

文章目录一、APB总线介绍1.1.什么是APB总线1.2.典型的基于 AMBA 总线的系统架构1.3.APB信号列表(重点)二、APB总线传输(时序)2.1.APB 状态机2.2.写操作(重要)2.3.读操作(重要)2.4.APB组件接口(重要)2.4.1.APB Bridge框图2.4.2.APB Slave框图三、APB到AHB的接口3.1.读操作3.2.写操作3.3.读写交替传送 一、APB...

Mr.翟的博客 4万+

ViLike.js - 一款轻量级的访问量&点赞统计插件

ViLike JS ???????? 一款基于Bmob后端云轻量级的访问量&点赞插件 在线演示 ViLikeJS Demo 特性 简单功能简单实现,封装十几行代码实现超轻量的JS插件。 无需在个人服务器上搭建后端系统,数据访问更加安全。 借助Bmob创建后端平台,创建、管理更加方便快捷。 什么情况需要它 ✅ 当你想在你的博客显示访客统计时; ✅ 当你想在你的文章页显示阅读量时; ✅ 当你想给你的文章或者作品实现点赞功能时; … 关于它 ViLikeJS 是继 左撇峰子 开发 VuePress

左撇峰子的博客 2444

使用 Restart Extension 继续解决 Ansys 机械分析

您正在执行复杂或大型的多步有限元分析,突然,您意识到经过数小时的求解后,您需要添加或修改边界条件。在本篇博文中,您将了解如何利用 Ansys Mechanical 中的 RestartAnalysis 扩展来扩展多步分析,方法是合并额外的时间步骤和边界条件,而不会丢失已计算的结果。幸运的是,在 Mechanical 中,有一种直接的方法可以实现这一点,而不会损害您之前的结果,而这在添加新边界条件和使用重新启动点时经常发生。得到的结果符合预期,您可以看到施加的力产生的这两个部分之间的相对位移。

jkh920184196的博客 1233

YOLOv11涨点改进| CVPR 2026 | 全网独家首发、特征融合改进篇| 引入SRFusion 空间细化多级融合,含多种创新融合改进,涨点可直接发论文,适合裂缝图像检测,小目标检测任务高效涨点

🔥本文提出SRFusion空间细化多级融合模块,用于改进YOLOv11网络模型。该模块通过高分辨率特征引导低分辨率语义特征的融合,利用空间注意力机制对上采样后的特征进行加权细化,增强多尺度特征间的空间细节交互。SRFusion模块能够提升模型对目标区域的表达能力,有效改善小目标、密集目标及复杂背景场景下的检测效果,同时保持YOLOv11的高效性与实时检测性能。文章详细介绍了模块结构、实现原理、核心代码及在YOLOv11中的三种配置方法,为模型优化提供了创新解决方案。

Ai缝合怪、助力小伙伴高效发论文 149

JavaScript 使用cookie实现点击次数统计

话不多说上代码 addCookie(cookieName, cookieValue, cookieTimeOut){ if (cookieName != "" && cookieValue != "" && cookieTimeOut != "") { if (isNaN(cookieTimeOut) == false) { let nowDate = new Date(); nowDate.setTim

weixin_38724114的博客 1296

RK3588+YT9215快速拓展以太网口

YT9215支持7个端口的非阻塞数据传输,确保高效的数据流处理;在开发过程中,最重要的一点就是YT9215与RK3588的GMAC连接和配置部分,下面是gmac1对应dtsi文件的修改,包括注释掉rgmii_phy1对应的mdio1,以及gmac1对应的phy-handle部分,同时将gmac1修改成1000Mbps全双工模式。这就是最简单,最快速的RK3588拓展网口的方法了,如果需要用到交换芯片的其他功能,那就不可以直接使用原厂提供的bin,而是需要对YT9215进行另外的驱动开发。

带着耳朵取流浪的博客 2796

比较好用的js统计插件,js统计代码

比较好用的js统计插件,js统计代码 http://www.highcharts.com

Rock的专栏 3997

【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程

在众多游戏的主界面、商城、图鉴或关卡选择界面中,我们常常能看到轮播图的身影。 它以动态、直观的方式展示游戏角色、皮肤、成就或场景,不仅极大地提升了界面的美观度和交互性,还能高效地引导玩家聚焦于核心内容。 本篇文章将从零开始,一步步在Unity中构建一个功能完备、性能优良的游戏轮播图。 使用UGUI系统,通过代码驱动,实现包括自动轮播、手动拖拽、分页指示器、无限循环等核心功能。 无论是UI新手还是希望优化现有方案的开发者,这篇文章都将为你提供清晰的思路和完整的解决方案。

努力前行,总会成为自己心中的那道光 4万+

用python画带有正负值的条形图

常见的条形图只能表现数据的大小,却不能表现值的正负关系。但是其实仅仅使用`pandas`和`matplotlib`两个包就可以实现y轴负轴的添加以及负值的显示,并且可以为正负值分别设置不同的颜色,让条形图看上去更加清晰,易于我们分析

weixin_44853840的博客 5384

JS实现点击事件统计2

/** * 点击事件上报,分为立即上报和延时上报,延时上报通过cookie存储。 * * 一、配置参数,主要用于定义上报的一些配置信息。通过在外部定义_clickc对象重置参数。 * 参数名称 类型 默认值 说明 * selector: string '_click_rp' 点击

sugang_ximi的专栏 1444

价值微笑曲线与AI公司的位置

1. 背景介绍 1.1 问题由来 自20世纪60年代,哈佛大学商学院教授西奥多·波特提出了“价值链”理论以来,企业如何构建竞争优势成为企业经营管理领域的研究重点。随着全球化的发展和科技进步,企业竞争环境发生了深刻变化,传统价值链管理模式逐渐显现出局限性。近年来,全球竞争格局由成本竞争转向创新竞争,企业的生存

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1096

帆软报表(finereport)JS实现点击参数面板按钮显示或隐藏数据

当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据。如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据。 打开报表 在参数面板添加一个标签控件,控件名为lable,设置标签控件不可见,控件值为“显示”。 在参数面板添加一个按钮控件,控件名为button,控件值为“只显示合计数据”,并添加点击事件。 编辑点...

weixin_30556161的博客 7466

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android生成统计图,Android使用Echart实现统计图

今天给大家分享的是:如何在android端使用echart实现统计图我们来看一下实现效果首界面折线图柱状图下面再看一下我们的工程截图,最核心的两个文件我已经标注出来了。下面来看实现过程首先需要在Echarts官网下载echarts.min.js文件这里直接贴出下载地址然后将下载的放到我们项目的assets目录下接着编写我们的html文件Android使用Echarts示例window.addEve...

weixin_39968640的博客 1159

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jquery 判断点击次数_javascript如何统计点击次数?

JavaScript中可以在点击事件上绑定函数,点击时执行函数,通过统计函数执行次数来统计点击次数。JavaScript中统计点击次数:Document#Odiv{margin:0 auto;width: 200px;height:200px;background: yellow;}点击0次var time=0;function show(){if(time%2==0){Odiv.style.ba...

weixin_39562185的博客 1447

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php统计点击次数,javascript,_JS 怎么实现点击页面,统计点击次数,怎么写?,javascript - phpStudy...

JS 怎么实现点击页面,统计点击次数,怎么写?场景:点击一个ul结构的页面,统计每个li标签的点击次数,每个li都有一个唯一Id=postId根据这个postId返回到服务器,返回参数有:用户ID(userId)和点击数(clickNum),请求方式是post。在写这个post之前,还有一个ajax的get查询的方法,目的是填充所有li标签的内容:(疑问?在点击li标签后,会打开li标签的链接内容...

weixin_35703300的博客 212

统计链接点击次数 显示在html上,JS 怎么实现点击页面,统计点击次数,怎么写?...

场景:点击一个ul结构的页面,统计每个li标签的点击次数,每个li都有一个唯一Id=postId根据这个postId返回到服务器,返回参数有:用户ID(userId)和点击数(clickNum),请求方式是post。在写这个post之前,还有一个ajax的get查询的方法,目的是填充所有li标签的内容:(疑问?在点击li标签后,会打开li标签的链接内容,这个可以忽略吗?它的跳转链接会不会影响这个点...

weixin_39644377的博客 1379

简单有效统计web 页pv、uv的方法

统计某个页面点击提交按钮pv的JS:(function(){ var Y = YAHOO.util, Dom = Y.Dom, Event = Y.Event; function doMonitor(type){ var img = new Image() ; img.src = "http://www.atpanel.com/jsclick?

黄刚的专栏 1万+

html代码鼠的故事游戏,分享一个html+js实现打地鼠游戏的实例代码

本文主要分享了js实现打地鼠小游戏的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧话不多说,请看代码:打地鼠#content {width:960px;margin:0 auto;text-align:center;margin-top:40px;}#form1 {margin:20px 0;}table {margin:0 auto;cursor:url(http://cdn.attac...

weixin_26872311的博客 485

百度统计 事件跟踪

  有一个需求,就是统计页面上图片的点击,我发现百度统计中事件跟踪可以用,缺点的是数据出来要延迟几小时 先安装百度统计的代码,怎么按转网上有,不说了   比如我要给我页面上的class 为sponsorlink 的 链接加上统计, 在页面的js中加这段代码 $('.sponsorlink').on('click', function(){ v...

wzgdavid的博客 647

jquery实现tab选项卡同一个按钮不同onClick链接的解决方案

项目需求 TAB选项卡:“月统计”和“年统计”; 实现不同TAB选项卡时,同一个按钮实现不同的链接,弹出对应的“月统计”和“年统计”放大页面。 解决方案 HTML代码 <div class="allTitle">荣誉墙 <span class="laybg new6" onClick="x_admin_show('月统计','months.html',700,450)"><

挖掘大数据价值,让决策者快速洞悉趋势,让大众读懂数据背后的故事。 686

JS实现点击参数面板按钮显示或隐藏数据

当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据。如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据。 打开报表 在参数面板添加一个标签控件,控件名为lable,设置标签控件不可见,控件值为“显示”。 在参数面板添加一个按钮控件,控件名为button,控件值为“只显示合计数据”,并添加点击事件。 编辑点击事件,添加下面的JavaScript代码: 点击(此处)折叠或打开 /*获取隐藏的标签控件的.

fkk1688的博客 382
上一篇: Flume笔记一之简介部署
下一篇: 网站点击流数据分析
王树民
博客等级 码龄10年 912粉丝 560原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值