मैं Google Analytics में फ़ॉर्म क्रियाओं को ट्रैक करने के लिए एक काफी परिष्कृत सीआरएम के लिए एक ट्रैकिंग स्क्रिप्ट पर काम कर रहा हूं। मैं के साथ फॉर्म क्रियाओं को सटीक रूप से ट्रैक करने की इच्छा को संतुलित करने की कोशिश कर रहा हूं, की आवश्यकता नहीं है ताकि किसी फ़ॉर्म को काम न करने से रोका जा सके।e.preventDefault(); कितना खतरनाक है, और इसे कीडाउन/मूसडाउन ट्रैकिंग द्वारा प्रतिस्थापित किया जा सकता है?
अब, मुझे पता है कि ऐसा कुछ करने से काम नहीं होता है।
$('form').submit(function(){
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
});
डीओएम अनलोड करता है इससे पहले प्रक्रिया करने का मौका होता है।
तो, नमूना कोड का एक बहुत कुछ इस तरह की सिफारिश की:
$('form').submit(function(e){
e.preventDefault();
var form = this;
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
//...do some other tracking stuff...
setTimeout(function(){
form.submit();
}, 400);
});
यह most cases में विश्वसनीय है, लेकिन यह मुझे परेशान करता है। क्या होगा यदि e.preventDefault();
के बीच कुछ होता है और जब मैं DOM आधारित सबमिट को ट्रिगर करने के लिए घूमता हूं? मैंने पूरी तरह से फॉर्म तोड़ दिया है।
मैं कुछ अन्य विश्लेषिकी कार्यान्वयन के आसपास poking किया गया है, और मैं something like this ध्यान दिया है:
$('form').mousedown(function(){
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
});
$('form').keydown(function(e){
if(e.which===13) //if the keydown is the enter key
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
});
असल में, बजाय दखल फ़ॉर्म सबमिट करेंगे, यह सोचते हैं द्वारा यह preempting की है कि अगर किसी को नीचे माउस ले जाने या कुंजीयन है उस फॉर्म की तुलना में एंटर पर नीचे जमा किया गया है। जाहिर है, इसके परिणामस्वरूप झूठी सकारात्मक मात्रा में निश्चित रूप से परिणाम होगा, लेकिन यह e.preventDefault();
के उपयोग को पूरी तरह समाप्त कर देता है, जो मेरे दिमाग में जोखिम को समाप्त करता है जिसे मैं कभी भी फ़ॉर्म को सफलतापूर्वक जमा करने से रोक सकता हूं।
तो, मेरे सवाल:
- यह मानक रूप से ट्रैकिंग स्निपेट लेते हैं और इसे से कभी पूरी तरह से प्रस्तुत करने से प्रपत्र रोकने को रोकने के लिए संभव है?
- mousedown/keydown वैकल्पिक व्यवहार्य है?
- क्या कोई सबमिशन केस हैं जो इसे याद कर सकते हैं? विशेष रूप से, क्या माउस और कीबोर्ड के अलावा सबमिट करने के अन्य तरीके हैं? और ब्राउज़र को हमेशा पृष्ठ को अनलोड करने से पहले जावास्क्रिप्ट को संसाधित करने का समय होगा?
एमएमएम, मुझे दोबारा प्रयास करने दो। केवल मनमाने ढंग से प्रतीक्षा करने का समय और यह मानते हुए कि यह पृष्ठ छोड़ने के लिए सुरक्षित है * गारंटीकृत * या तो (ए) उपयोगकर्ताओं के समय को बर्बाद कर दें या (बी) जल्दी से छोड़कर असफल हो जाएं (बाधाओं को आप सही ढंग से अनुमान लगाएंगे हर बार उपेक्षा किया जा सकता है)। इसके बजाय आपको एक तकनीक की आवश्यकता है जिससे ट्रैकिंग पूर्ण होने पर आपको अधिसूचित किया जा सके। सौभाग्य से, Google Analytics कतार प्रदान करता है कि: आपको बस कतार के अंत में फ़ंक्शन ऑब्जेक्ट को धक्का देना है। एक बार कतार में इसके आगे की सब कुछ पूरी हो जाने के बाद, वह कार्य निष्पादित हो जाएगा और आपका फॉर्म जमा कर दिया जाएगा। – Malvolio
अब मुझे एहसास है कि आप "कुछ ट्रैकिंग सामग्री" असफल होने के बारे में भी चिंतित हो सकते हैं और इस प्रकार फॉर्म को कभी सबमिट नहीं किया जा सकता है। इसके लिए आपके दो विकल्प हैं, सभी कोड लपेटें लेकिन एक कोशिश-को छोड़कर ब्लॉक में सबमिट करें, जो मैला द्वारा सुरक्षित है, या सरल फंक्शन की अंतिम पंक्ति तक रोकथाम को कॉल न करें, इसलिए यदि कोई त्रुटि है, तो यह जीता कॉल नहीं किया जाएगा और सबमिशन * अभी भी जाना चाहिए, जो सुरुचिपूर्ण है लेकिन ध्यान से परीक्षण किया जाना चाहिए। – Malvolio
'_gaq.push ((फ़ंक्शन() {' होना चाहिए '_gaq.push (function() {' – Thomas