[JS]点出统计器
作者:lnsoso 发布时间:2013-07-22 03:23:24
ff 默认不让改 status
opera9 测试通过
ie6 测试通过
这东西是给统计部门用的,分析用户习惯以改良网站布局。
只是写着玩的小东西,所以很多地方不太理想。
save() 方法是保存记录的,没仔细做,应该再加个判断浏览器,然后决定用 img 还是 iframe,以保证 request 一定能发出去.
onclick() 方法是触发事件时执行的
使用方法:
在任意页面中加入
CODE:
script src="clickout.js"></script>
最好是放在 </body> 前面,目的是防止 onclick 事件覆盖。
clickout.js
CODE:
/*
* 说明:点出统计器
* 作者:邓威
* 日期:2006-07-25
* 版本:v1.0
*/
function ClickOut()
{
this.oCO = null;
this.src_onclick = null;
this.isDEBUG = true || "status"; // 改成 this.isDEBUG = "status"; 就可以在 window.status 里显示了
this.debug = function(arg) {
if( this.isDEBUG == "status" ) window.status = arg.toString();
else if ( this.isDEBUG ) alert(arg.toString());
}
this.save = function() {
var sUrl = "clickout.php?";
sUrl += "tag=" + encodeURIComponent(this.click_tag);
sUrl += "&type=" + encodeURIComponent(this.click_type);
sUrl += "&src=" + encodeURIComponent(this.click_src);
sUrl += "&text=" + encodeURIComponent(this.click_text);
this.oCO = document.createElement('<div id="ClickOut" style="width:0px;height:0px;"></div>');
document.body.appendChild(this.oCO);
document.getElementById("ClickOut").innerHTML = '<img src="' + sUrl + '" style="display: none;" width="0px" height="0px" \/>';
return true;
}
this.onclick = function(args) {
if( this.src_onclick != null ) this.src_onclick(e);
var obj = event.srcElement;
var tag = obj.tagName.toLowerCase();
this.click_id = obj.id?obj.id:null;
this.click_class = obj.className?obj.className:null;
this.click_name = obj.name?obj.name:null;
this.click_tag = tag;
this.click_parent = obj;
this.click_obj = obj;
this.click_path = tag;
if( tag == "a" ) {
this.click_type = "text";
this.click_src = obj.href;
this.click_text = obj.innerHTML;
}
else if ( tag == "img" ) {
this.click_type = "pic";
this.click_src = obj.src;
this.click_text = obj.alt;
}
else if ( tag == "font" || tag == "b" || tag == "strong" ) {
this.click_type = "text";
this.click_src = "";
this.click_text = obj.innerHTML;
}
else {
this.click_type = "layer";
this.click_src = "" ;
this.click_text = obj.innerHTML;
}
this.GetParent();
this.debug(this.click_path);
doSave();
}
this.GetParent = function() {
if( !this.click_parent.parentNode.tagName ) return;
this.click_parent = this.click_parent.parentNode;
this.click_path = this.click_parent.tagName.toLowerCase() + "[ " +
(this.click_parent.id?("ID:" + this.click_parent.id):"") +
(this.click_parent.className?(" ,CLASS:" + this.click_parent.className):"") +
(this.click_parent.name?(" ,NAME:" + this.click_parent.name):"") +
" ]" + ">" + this.click_path;
this.GetParent();
}
}
// 实例
var objCO = new ClickOut();
objCO.src_onclick = document.onclick;
function click_tmp() {
objCO.onclick();
}
function doSave() {
objCO.save();
}
// bind event
document.onclick = click_tmp;
演示:
运行代码框
[Ctrl+A 全部选择 ]


猜你喜欢
- 背景最近在写一个echarts数据看板,要在一个页面中展示多张图表,所以留给每张图表的尺寸就很小。这也就使得图表x轴的刻度文字全部挤到一起了
- 前言限流器,顾名思义用来对高并发的请求进行流量限制的组件。限流包括 Nginx 层面的限流以及业务代码逻辑上的限流。流量的限制在众多微服务和
- 标题显而易见,要说两种情况:重新打开页面或者返回某个页面时滚动到上次离开时的位置,以及不滚动保持在顶部。滚动这也有两种情况:页面重新打开,与
- 在python用import或者from...import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我
- DataFrame是一个组织成命名列的数据集。它在概念上等同于关系数据库中的表或R/Python中的数据框架,但其经过了优化。DataFra
- 三重相等运算符 === 严格检查2个值是否相同:1 === 1; // => true1 === '1';
- 先看看:css中class与id的区别及应用表单的name与id其实是同一个意思,都是为了标记对象名称。它们所不同的是:name是Netsc
- 目录一、conftest.py的特点二、conftest.py的使用场景三、conftest.py的生效范围四、conftest.py的的s
- 引言Python 是一个强大的语言,提供了许多内置函数以帮助开发者编写高效、简洁的代码。在这篇文章中,我们将深入探讨三个内置函数:map、f
- 上一篇文章介绍了线程的使用。然而 Python 中由于 Global Interpreter Lock (全局解释锁 GIL )的存在,每个
- 因为我的某个好友在情人节的时候秀恩爱,所以我灵光一闪制作了qq消息轰炸并记录了下来。首先我的编程环境是:windows 10系统python
- python中列表的常见操作列表元组的简单操作前面我们已经学过了关于len()函数、赋值运算符及身份运算符的使用,下面简单回顾一下这些在列表
- 一年一度的六一儿童节又来了,祝大朋友小朋友节日快乐。你有没有一瞬间,特别想要回到童年?童年是一盒水彩笔,五颜六色精彩纷呈。童年是一幅漫画,新
- 网上有很多提供在线按钮制作、文字标题制作、Logo制作服务的网站,它们可以非常方便了让大家轻松的获得效果出色的各类图标型的图片,下面就快来看
- 星爷的一部“国产007”应该是无人不晓,其中一个片段是将“007”向MM展示他的秘密武器。皮鞋可以吹头发,大哥大可以刮胡子……把真实功能隐蔽
- MySQL 与 Elasticsearch 数据不对称问题解决办法jdbc-input-plugin 只能实现数据库的追加,对于 elast
- 有时候在读取数据库之后,针对同一结果集,在同一个页面上输出的时候可能会碰到多次输出,也就是多次执行mysql_fetch_array(),在
- 本文介绍了redis之django-redis的简单缓存使用,分享给大家,具体如下:自定义连接池这种方式跟普通py文件操作redis一样,代
- isdecimal()方法检查字符串是否仅由十进制字符组成。此方法只存在于unicode对象。注意:要定义一个字符串为Unico
- 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思?函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进