第二行和第三行將script
標記插入文檔中,以便加載腳本http://tracking.callmeasurement.com/clickx/click_matrix.cfm
。如果頁面的協議是http
,https
如果是https
,則它使用http
。 (您可以丟棄該部分; more here。)它將頁面的引用作爲參數傳遞給加載腳本的GET(&
替換爲zzzzz
),並且還包含munique
參數,該參數僅獲取當前日期的數字版本,作爲試圖擊敗緩存。
調用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甚至當,但人們的口味都不同......
_Just sticking it in not working._什麼不工作意味着什麼?某種原因「這就是她說的話」突然出現在我的腦海裏。 – epascarello 2011-02-22 17:33:37
哈哈,謝謝。我剛剛在T.J.的文章中發表了一篇評論,解釋了它在做什麼。把它放在window.load中有一個問題。 – RyanPitts 2011-02-22 17:39:50