2012-06-28 71 views
2

Piwik跟蹤器允許自定義跟蹤這樣:未捕獲的ReferenceError:piwikTracker沒有定義

jQuery('div.orange').click(function() { 
    piwikTracker.trackGoal(3); // Track click on this hitarea 
}); 

在我的WordPress的環境中,我從原因很明顯的piwik.js腳本獨立腳本加載此jQuery的。

在Chrome中,我收到我使用自定義跟蹤腳本錯誤

Uncaught ReferenceError: piwikTracker is not defined

有沒有一種方法可以在調用事件處理函數之前定義函數?爲什麼只使用Chrome?

編輯

我檢查了加載的JavaScript中的piwik PHP腳本,它的實際加載在頁腳的腳本。調用自定義跟蹤的函數被加載到標題中。這很重要嗎?標題中的腳本是否總是在頁腳之前加載?

+0

您是否在「網絡」選項卡中驗證腳本正在加載? –

+0

只是做了,它不是!它在IE和Firefox中都有。 – AlxVallejo

回答

1

嘗試把你的代碼ready處理:

$(function(){ 
    jQuery('div.orange').click(function() { 
    piwikTracker.trackGoal(3); // Track click on this hitarea 
    }); 
}); 

或者onload事件兩者的工作原理:

window.onload = function() { 
    jQuery('div.orange').click(function() { 
    piwikTracker.trackGoal(3); // Track click on this hitarea 
    }); 
} 
3

是。你把腳本放在頁面的地方。認爲,當瀏覽器解釋頁面時,它將首先讀取頭部,然後讀取正文。對於你的情況,你最好先檢查DOMReady和對象piwikTracker。

jQuery(document).ready(function() { 
    jQuery('div.orange').click(function() { 
     if (piwikTracker) { 
      piwikTracker.trackGoal(3); // Track click on this hitarea 
     } 
    }); 
}); 
+0

Piwik.js正在加載頁腳,這就是爲什麼函數沒有加載。我試着指定腳本加載在頁腳中,但是這造成了死亡的白屏。 – AlxVallejo

+0

jquery是在準備處理程序,但我仍然得到錯誤。我想我指定加載腳本的錯誤依賴。我不確定我需要依賴哪個腳本來獲取Piwik和wp-piwik插件。 – AlxVallejo

+0

DOM:ready是不夠的,它應該等到窗口:load:'$(window).load(function(){...});'' – giraff

5

異步跟蹤在一個優雅的方式解決了這個問題:

var _paq = _paq || []; 
_paq.push(['trackGoal', 3]); 

如果piwik是之前加載,這將自動發送目標要求。如果piwik在它之後被加載,它只是一個數組,一旦piwik加載就會被處理!

請參閱documentation關於如何設置異步跟蹤,它將成爲Piwik 1.11的默認方法。

相關問題