2016-06-30 22 views
0

我想存儲最後一頁和用戶在頁面意外退出之前關注的最後一個表單字段(沒有點擊繼續),但我的解決方案不是加工。 我在網頁上使用了onbeforeunload事件,我完全意識到這個事件在所有瀏覽器中並不一致,但我無法找到以另一種方式解決這個問題的方法。在頁面卸載時跟蹤用戶的最後一個表單字段

window.onbeforeunload = function() { 
         if (fieldName != null && fieldName.length > 0) { 
          var formName = location.pathname.substring(1); 
          if (typeof (TrackFormField) == 'function') { 
           try { 
            TrackFormField(formName, fieldName); 
           } 
           catch (err) { 

           } 
          } 
         } 

       }; 

TrackFormField是在一個單獨的文件中的函數,僅僅值分配給該屬性

function TrackFormField(formName, fieldName) { 
     if (formName) { 
      s.prop23 = formName + ":" + fieldName; 
     } 

     sendOmniture(); 
    } 

而且sendOmniture執行以下操作:

function sendOmniture() { 
     var s_code = s.t(); if (s_code) document.write(s_code) 
    } 

奇怪的是,有時它但通常我在分析調試器和Fiddler中都看不到prop23。

經過一番調試後,我發現s_code由於某種原因在send omniture函數中未定義。 我能做些什麼來解決這個問題?

+0

如果你沒有看到它(當你看到它實際上正在發出請求時),那麼對Adobe的實際http請求將顯示爲查詢字符串參數'c23 = [你的值]',那麼你必須有代碼覆蓋's.prop23'(我會先查看's_doPlugins'函數,因爲在設置's.prop23'和那個'st()'調用)或者'TrackFormField'之間(大概)沒有其他任何東西。不是什麼被觸發! –

回答

0

我的猜測是window.onbeforeunload事件會在大多數情況下會殺死(s)對象,然後纔有機會執行。

如何在Adobe DTM中使用直接調用規則來啓動焦點更改的功能?這樣您就不需要將任何操作綁定到onbeforeunload事件。

希望這會有所幫助。