【发布时间】:2017-03-10 17:05:11
【问题描述】:
我想我可以制作类似谷歌分析脚本的东西。他们使用 javascript 来捕获数据并将其发送到给定的 URL。但我希望它不用 ajax 或 REST API。
到目前为止我发现了什么:
<script type="text/javascript">
var statsPage = 'http://www.uw-url.be/process.php';
var stats = {
page: location.href,
browser: 'ie',
ip: '127.0.0.1',
referral: 'google.com?search=test'
};
var params = $.param(stats);
alert(statsPage+'?'+params);
</script>
警报消息提供了我需要的一切,但问题是如何将这些数据发送到 statsPage URL?我在网上找到了一个小解决方案,但我不知道它是否可以......也许有更好的解决方案可以做到这一点,但我不知道......我在听你们的!
$('<img>', {
src: statsPage + '?' + params
}).appendTo('body').remove()
还有别的... 如果我查看分析 javascript 代码,这完全是其他脚本。谁能解释一下它是如何工作的?
这里有一个例子:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-49578310-1', 'auto');
ga('send', 'pageview');
</script>
这里整件事的意思是每个人都可以在他们的网站上使用它。使用 AJAX 或 REST API 不可能简单地集成它。不是任何人都可以使用它。
对于我第一个发布的脚本,我还使用了 jquery ()。分析脚本不会。
编辑
我已经根据 Peter G 的回答构建了一个新代码。我不需要 jquery。这段代码是否足够安全使用?我为 p var 编写了一个函数:
function ca(c,o,n,t,e,t,u){return p={type:c,userid:o,gender:n}}
ca("pageview", "1", "male");
下面的整个脚本:
<script type="text/javascript">
var statsPage = 'http://www.my-url.com/response.php';
function ca(c,o,n,t,e,t,u){return p={type:c,userid:o,gender:n}}
ca("pageview", "1", "male");
var params = Object.keys(p).map(function(k) {
return encodeURIComponent(k) + '=' + encodeURIComponent(p[k])
}).join('&')
const req = new XMLHttpRequest();
//req.addEventListener('load' /*callback after req is complete*/);
req.open('GET', statsPage + '?' + params);
req.send();
req.onreadystatechange = function() {
if (req.readyState == XMLHttpRequest.DONE) {
alert(req.responseText);
}
}
</script>
如您所见,我在这里隐藏了 addEventListener。使用 this 和 that 有什么区别?
【问题讨论】:
标签: javascript jquery