我获得了这个JavaScript代码段,可以在网站上实现。坚持下去是行不通的。我觉得如果我能更好地理解这段代码的作用,那么我就可以使它工作。有人可以大致解释这段代码在做什么吗?谢谢!
<script type="text/javascript">
var thisref = document.referrer.replace(/&/g, "zzzzz");
var ciJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
document.write(unescape("%3Cscript src='" + ciJsHost + "tracking.callmeasurement.com/clickx/click_matrix.cfm?munique=" + new Date().getTime() + "&prev=" + thisref + "' type='text/javascript'%3E%3C/script%3E"));
</script>
答案 0 :(得分:8)
第二行和第三行正在向文档中插入script
标记,以便加载脚本http://tracking.callmeasurement.com/clickx/click_matrix.cfm
。如果页面的协议为http
,则http
使用https
,如果是https
,则使用&
。 (你可以放弃那部分; more here。)它将页面的引用者作为参数传递给加载脚本的GET(zzzzz
替换为munique
),还包括{ {1}}参数,它只获取当前日期的数字版本,以试图阻止缓存。
unescape
调用和编码字符的原因是,如果您在</script>
标记内的JavaScript代码中的字符串中有script
,则会过早地结束脚本标签。 (JavaScript代码应该在其自己的文件中的几个原因之一。)因此,他们通过编码括号来避免HTML解析器看到</script>
,并使用unescape
来更新它们。
更新:下面你说你正试图在window.load
中使用该代码。您不能这样做,因为您只能在页面的初始分析期间使用document.write
。 (如果以后再使用它,它会重新打开文档 - 清除它 - 然后写入新的空白文档。)
您可以稍后通过其他机制添加script
代码(更新:抱歉,错过了您使用的jQuery;最底层是jQuery版本):
<script type="text/javascript">
window.onload = function() {
// Get the referrer, replacing `&` with `zzzzz`
var thisref = document.referrer.replace(/&/g, "zzzzz");
// Get the protocol to use based on the current document's protocol
var ciJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
// Create a script element, set its type and src
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = ciJsHost
+ "tracking.callmeasurement.com/clickx/click_matrix.cfm?munique="
+ new Date().getTime()
+ "&prev=" + thisref;
// Add it just about anywhere; `document.body` works fine and is
// easy. The script is downloaded and executed when you do the append.
document.body.appendChild(script);
};
</script>
或者如果你想使用关于协议的技巧I linked to above:
<script type="text/javascript">
window.onload = function() {
// Get the referrer, replacing `&` with `zzzzz`
var thisref = document.referrer.replace(/&/g, "zzzzz");
// Create a script element, set its type and src
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "//tracking.callmeasurement.com/clickx/click_matrix.cfm?munique="
+ new Date().getTime()
+ "&prev=" + thisref;
// Add it just about anywhere; `document.body` works fine and is
// easy. The script is downloaded and executed when you do the append.
document.body.appendChild(script);
};
</script>
你并不需要thisref
部分的单独变量;改变这种情况并删除上述解释:
<script type="text/javascript">
window.onload = function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "//tracking.callmeasurement.com/clickx/click_matrix.cfm?munique="
+ new Date().getTime()
+ "&prev=" + document.referrer.replace(/&/g, "zzzzz");
document.body.appendChild(script);
};
</script>
最后,我错过了你正在使用jQuery,抱歉'那个:
<script type="text/javascript">
$(window).load(function() {
$("<scr" + "ipt type='text/javascript' src='//tracking.callmeasurement.com/clickx/click_matrix.cfm?munique="
+ new Date().getTime()
+ "&prev=" + document.referrer.replace(/&/g, "zzzzz") + "'></src" + "ipt>")
.appendTo(document.body);
});
</script>
...虽然你可能会考虑jQuery(...
而不是$(window).load(...
,除非你真的希望它等到所有图像都被加载(也许你这样做了!)。
我实际上更喜欢非jQuery版本,即使使用jQuery,但人们的口味也不同......
答案 1 :(得分:2)
它只是尝试从服务器加载脚本。它也发送了一个虚拟参考信息。
答案 2 :(得分:1)
首先,它会使用引用页面的URL来替换带有'zzzzz'的&符号。
接下来,它确定用于访问当前页面的协议是HTTP还是HTTPS。
最后,它创建了一个脚本标记,其中src元素设置为跟踪站点,并使用与访问当前页面时相同的协议,使用基于时间的唯一ID为其提供修改后的引用URL。
简而言之,它是跟踪代码以确定此页面的到达者来自哪里。