频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

JS点出统计器

来源:qqread收集 作者:lnsoso 出处:巧巧读书 2007-01-15 进入讨论组

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 全部选择 提示:你可先修改部分代码,再按运行]

经典论坛讨论:
http://bbs.blueidea.com/thread-2661557-1-1.html

打开: http://www.qqread.com/jscript/w293372.html进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章