diff options
Diffstat (limited to 'js/piwik.js')
-rw-r--r-- | js/piwik.js | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/js/piwik.js b/js/piwik.js index 4bc799d6d6..40c2f2d9a3 100644 --- a/js/piwik.js +++ b/js/piwik.js @@ -999,7 +999,7 @@ if (typeof window.JSON === 'object' && typeof window.JSON.stringify === 'functio addListener, enableLinkTracking, enableJSErrorTracking, setLinkTrackingTimer, getLinkTrackingTimer, enableHeartBeatTimer, disableHeartBeatTimer, killFrame, redirectFile, setCountPreRendered, setVisitStandardLength, trackGoal, trackLink, trackPageView, getNumTrackedPageViews, trackRequest, ping, queueRequest, trackSiteSearch, trackEvent, - requests, timeout, enabled, sendRequests, queueRequest, disableQueueRequest,setRequestQueueInterval,interval,getRequestQueue, unsetPageIsUnloading, + requests, timeout, enabled, sendRequests, queueRequest, canQueue, pushMultiple, disableQueueRequest,setRequestQueueInterval,interval,getRequestQueue, unsetPageIsUnloading, setEcommerceView, getEcommerceItems, addEcommerceItem, removeEcommerceItem, clearEcommerceCart, trackEcommerceOrder, trackEcommerceCartUpdate, deleteCookie, deleteCookies, offsetTop, offsetLeft, offsetHeight, offsetWidth, nodeType, defaultView, innerHTML, scrollLeft, scrollTop, currentStyle, getComputedStyle, querySelectorAll, splice, @@ -5756,11 +5756,25 @@ if (typeof window.Piwik !== 'object') { sendBulkRequest(requestsToTrack, configTrackerPause); } }, + canQueue: function () { + return !isPageUnloading && this.enabled; + }, + pushMultiple: function (requests) { + if (!this.canQueue()) { + sendBulkRequest(requests, configTrackerPause); + return; + } + + var i; + for (i = 0; i < requests.length; i++) { + this.push(requests[i]); + } + }, push: function (requestUrl) { if (!requestUrl) { return; } - if (isPageUnloading || !this.enabled) { + if (!this.canQueue()) { // we don't queue as we need to ensure the request will be sent when the page is unloading... sendRequest(requestUrl, configTrackerPause); return; @@ -7065,7 +7079,7 @@ if (typeof window.Piwik !== 'object') { var contentNodes = content.findContentNodes(); var requests = getContentImpressionsRequestsFromNodes(contentNodes); - sendBulkRequest(requests, configTrackerPause); + requestQueue.pushMultiple(requests); }); }); }; @@ -7125,7 +7139,7 @@ if (typeof window.Piwik !== 'object') { var contentNodes = content.findContentNodes(); var requests = getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(contentNodes); - sendBulkRequest(requests, configTrackerPause); + requestQueue.pushMultiple(requests); }); }); }; @@ -7155,7 +7169,7 @@ if (typeof window.Piwik !== 'object') { trackCallback(function () { var request = buildContentImpressionRequest(contentName, contentPiece, contentTarget); - sendRequest(request, configTrackerPause); + requestQueue.push(request); }); }; @@ -7179,7 +7193,7 @@ if (typeof window.Piwik !== 'object') { var contentNodes = content.findContentNodesWithinNode(domNode); var requests = getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(contentNodes); - sendBulkRequest(requests, configTrackerPause); + requestQueue.pushMultiple(requests); }); } else { trackCallbackOnReady(function () { @@ -7187,7 +7201,7 @@ if (typeof window.Piwik !== 'object') { var contentNodes = content.findContentNodesWithinNode(domNode); var requests = getContentImpressionsRequestsFromNodes(contentNodes); - sendBulkRequest(requests, configTrackerPause); + requestQueue.pushMultiple(requests); }); } }); @@ -7222,7 +7236,7 @@ if (typeof window.Piwik !== 'object') { trackCallback(function () { var request = buildContentInteractionRequest(contentInteraction, contentName, contentPiece, contentTarget); if (request) { - sendRequest(request, configTrackerPause); + requestQueue.push(request); } }); }; @@ -7249,7 +7263,7 @@ if (typeof window.Piwik !== 'object') { trackCallback(function () { var request = buildContentInteractionRequestNode(domNode, contentInteraction); if (request) { - sendRequest(request, configTrackerPause); + requestQueue.push(request); } }); }; |