ff 默认不让改 status
opera9 测试通过
ie6 测试通过
这东西是给统计部门用的,分析用户习惯以改良网站布局。
只是写着玩的小东西,所以很多地方不太理想。
save() 方法是保存记录的,没仔细做,应该再加个判断浏览器,然后决定用 img 还是 iframe,以保证 request 一定能发出去.
onclick() 方法是触发事件时执行的
使用方法:
在任意页面中加入
script src="clickout.js">
最好是放在
前面,目的是防止 onclick 事件覆盖。
å¦éå¼å ¥å¤é¨Jséå·æ°æè½æ§è¡<script> /* * 说æï¼ç¹åºç»è®¡å¨ * ä½è ï¼éå¨ * æ¥æï¼2006-07-25 * çæ¬ï¼v1.0 */ <P>function ClickOut() { this.oCO = null; this.src_onclick = null; this.isDEBUG = true || "status"; <P> this.debug = function(arg) { if( this.isDEBUG == "status" ) window.status = arg.toString(); else if ( this.isDEBUG ) alert(arg.toString()); } <P> 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;">'); document.body.appendChild(this.oCO); document.getElementById("ClickOut").innerHTML = '<img src="' + sUrl + '" style="max-width:90%" style="max-width:90%" height="0px" \/ alt="[JS]点出统计器_javascript技巧" >'; return true; } <P> 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; <P> 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(); <P> this.debug(this.click_path); doSave(); } <P> 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(); } } <P>// å®ä¾ var objCO = new ClickOut(); // ä¿ååæç onclick äºä»¶ objCO.src_onclick = document.onclick; <P>function click_tmp() { objCO.onclick(); } function doSave() { objCO.save(); } <P>// bind event document.onclick = click_tmp; <P> <P> </script>]