1

我希望人们注册我的网站并给他们一个独特的 javascript 片段,他们必须把它放在他们的网站上。我有 2 个问题。

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 脚本将在不同的域上,这会起作用吗?

4

1 回答 1

1

此代码不是跨浏览器;最好用于Image执行跟踪,只需将所有跟踪数据转储到 URL 本身中。

优点是您可以提供一个<noscript>包含不可见跟踪像素的片段,而无需进行太多修改。脚本本身的分发和初始化可以通过这样的小片段来完成它将在正文中插入一个<script>标签并运行它。

另外,不要使用.onbeforeunload(),那东西很讨厌。最好使用会话属性来确定站点离开,例如请求之间的时间;如果您在 X 分钟内没有收到另一个请求,则假定用户已离开。

只要 cookie 域与脚本的 URL 相对应(即没有第三方 cookie),从您的 PHP 脚本设置 cookie 就应该按预期工作。

于 2012-12-18T07:59:01.310 回答