2012-04-22 40 views
0

我試圖實現在頁面加載Woopra定製的事件數據,和我使用他們的guidelines 我曾試圖推動網頁上的準備事件,但它總是給我woopratracker被沒有定義,但是當我嘗試使用它onclick事件它工作正常,我認爲有一個延遲加載woopra庫,但是我打電話它的功能在頁面準備就緒,這意味着我的電話應該等待頁面準備就緒在它執行之前! 我有settimeout並在1秒後調用相同的功能,它工作正常,但仍然不合邏輯,任何想法?謝謝:)WoopraTracker沒有在自定義事件數據定義

回答

3

你說得對 - 你在頁面加載之前調用woopraTracker。他們網站上的最新片段是異步,這意味着如果您在此代碼之後立即調用woopraTracker,它可能會失敗,因爲wsc.async=true會告訴瀏覽器繼續而不必等待此腳本初始化。如果您事先知道要跟蹤的內容,請將該代碼放入woopraReady。

在這個例子中,這正是他們所做的:http://www.woopra.com/docs/tracking/custom-event-data/。看起來你已經找到了這個文檔,但是你是否將代碼放入woopraReady並使用本地tracker變量而不是全局woopraTracker?一旦加載腳本,將會調用woopraReady,這樣您就不會遇到您遇到的問題。

如果您有其他跟蹤事件的內容,那麼在腳本無法加載的情況下包裝woopraTracker.trackEvent()也無妨,因爲用戶速度非常快,或者因爲woopra加載出錯。

與其說woopraTracker直接,你可以定義自己的包裝器:

var pushWoopraEvent = function(e) { 
    // Don't screw us over if Woopra failed to load or hasn't loaded yet 
    if (typeof woopraTracker === 'object') { 
    woopraTracker.pushEvent(e); 
    } 
}; 
pushWoopraEvent({name: 'Rate Song', stars: 5});