2014-09-27 63 views
1

我已經在Adobe DTM中定義了基於事件的規則,但是我可以在網站上看到這種行爲,即有時點擊事件不會觸發點擊事件,該規則已定義在此處。DTM中的點擊事件並不總是會觸發?

有人可以幫助我理解這一點,爲什麼會發生這種情況,這是什麼方式?

感謝,

阿迪

+2

在您的javascript控制檯中,鍵入_satellite.setDebug(true),您將能夠看到是否發生點擊事件。如果您正在導航到新頁面,請確保您將控制檯設置爲保留先前的日誌。 – BrettAHale 2014-09-29 05:08:35

+0

你需要提供更多的細節。但我的猜測是,當你說「有時」有效時,「有時」不會,它可能適用於某些鏈接,但不適用於其他鏈接。我的猜測是你可能有事件冒泡/傳播的問題。例如你有其他代碼附加到某些鏈接停止傳播/冒泡,以便其他代碼附加到它(例如DTM)不能做它的事 – 2014-09-29 17:43:42

+0

或者,你可以有一個DTM規則只觸發某些頁面或其他條件這影響了它。同樣,你需要提供更多的細節,比如DTM規則是什麼,關於什麼被點擊的細節等等。 – 2014-09-29 17:45:40

回答

0

這有可能是一些其他的代碼被阻止點擊事件被髮射到DTM代碼。如果其他點擊處理程序代碼使用preventDefault()功能或返回false,則會發生這種情況,這會阻止事件觸發任何其他偵聽器。

+0

「返回錯誤」需要進一步處理,因爲它也阻止了該事件傳播(或「冒泡「)DOM,而preventDefault()不會停止冒泡。 – 2017-11-30 01:20:10

1

我同意事件傳播(例如event.preventDefault())可能是爲什麼會發生的其他答案。但是我不知道如何解決這個問題,當你不能讓事件傳播時。

我最好的解決方案是手動捕獲您網站的所有點擊事件,並使用_satellite.track()調用直接規則。這遠非最佳,但它是有效的。

+0

這是正確的方法。您通常可以使用: jQuery('body')。on('click','#selector',function(){ _satellite.track('direct call rule'); }); 最糟糕的情況是,如果網頁上的其他腳本甚至不允許您手動跟蹤我發現的點擊次數,那麼您必須將您的規則條件基於由於點擊而發生的其他事件,例如成功消息出現。由於「進入視口」並不總是可靠的,我有時必須使用setInterval()來檢查它是否可見。 – 2015-07-30 14:07:09