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
出处:蓝色理想
责任编辑:moby
◎进入论坛网页制作、网站综合版块参加讨论
|