我希望人们注册我的网站并为他们提供一个他们必须放在他们网站上的独特javascript片段。 我有两个问题。
1)假设我使用下面的代码来跟踪其网站上的访问持续时间。下面的曲目跟踪一个人访问该网站并离开时,但我如何确保他们实际离开该网站而不只是访问该网站域上的另一个页面(意味着该用户仍在他们的网站上)。饼干?
var timeLog = {
start: null,
end: null,
init: function(){
this.start = new Date().getTime();
},
sendResults: function(){
this.end = new Date().getTime();
var jData = { "client": "some-access-string", "start": this.start, "end": this.end };
var client = new XMLHttpRequest();
client.open("POST", "http://yoursite.com/process_info.php");
client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
client.send(JSON.stringify(jData));
}
};
window.onbeforeunload = function() {
timeLog.sendResults();
};
timeLog.init();
2)我没有完成跨站点脚本,所以我想知道javascript片段是否调用了process_info.php脚本,我是否可以尝试设置cookie并获得$ _SERVER变量,例如$ _SERVER ['HTTP_USER_AGENT'] 。这可行吗,因为实际的PHP脚本将在不同的域上?
答案 0 :(得分:1)
此代码不是跨浏览器;最好使用Image
来执行跟踪,只需将所有跟踪数据转储到URL本身。
优势在于您可以提供包含不可见跟踪像素的<noscript>
代码段,而无需进行太多修改。脚本本身的分发和初始化可以使用像this这样的小片段来完成,该片段会在正文中插入<script>
标记并运行它。
另外,不要使用.onbeforeunload()
,那东西很讨厌。最好通过使用会话属性来确定站点离开,例如请求之间的时间;如果您在X分钟内未收到其他请求,则假定用户已离开。
只要cookie域与脚本的URL相对应(即没有第三方cookie),从PHP脚本设置cookie应该按预期工作。