"अपरिभाषित" बेतरतीब ढंग से 12 जून 2012 के बाद से मेरी वेबसाइट पर आग्रह के 1% में जोड़ा गया


80

12 जून 2012 11:20 टीयू के बाद से, मैं अपने वार्निश / अपाचे लॉग में बहुत अजीब त्रुटियों को देखता हूं।

कभी-कभी, जब एक उपयोगकर्ता ने एक पृष्ठ का अनुरोध किया है, तो कई सेकंड बाद मुझे एक समान अनुरोध दिखाई देता है, लेकिन url में अंतिम / url के बाद सभी स्ट्रिंग को "अपरिभाषित" से बदल दिया गया है।

उदाहरण: http://example.com/foo/bar एक http://example.com/foo/undefined अनुरोध चलाता है ।

बेशक "अपरिभाषित" पृष्ठ मौजूद नहीं हैं और मेरा 404 पृष्ठ बदले में लौटा है (जो मानक लेआउट वाला एक कस्टम पृष्ठ है, न कि क्लासिक अपाचे 404)

  • यह किसी भी पृष्ठ (मुखपृष्ठ से सबसे गहरे तक) के साथ होता है
  • विभिन्न ब्राउज़रों के साथ, (ज्यादातर क्रोम 19, लेकिन यह भी 3.5 से 12 तक फ़ायरफ़ॉक्स, IE 8/9 ...) लेकिन ट्रैफ़िक का केवल 1%।
  • इन अनुरोधों द्वारा भेजे गए हेडर क्लासिक हेडर हैं (और अजाक्स हेडर नहीं है)।
  • किसी दिए गए आईपी के लिए, यह बेतरतीब ढंग से होता है: कभी-कभी पहले पृष्ठ पर, कभी यात्रा के दौरान एक यादृच्छिक पृष्ठ पर, कभी-कभी यात्रा के दौरान कई पृष्ठ ...

बेशक यह एक जावास्क्रिप्ट समस्या की तरह लग रहा है (मैं गूगल द्वारा होस्ट किए गए 1.7.2 jquery का उपयोग कर रहा हूं), लेकिन मैंने js / html या सर्वर कॉन्फ़िगरेशन में बिल्कुल कुछ नहीं बदला है कई दिनों से और मैंने इस तरह की त्रुटि पहले कभी नहीं देखी थी। । और हां, html में ऐसी कोई लिंक नहीं है।

मैंने कुछ रोचक तथ्य भी देखे:

  • अपरिभाषित अनुरोधों को कभी भी अन्य पृष्ठों के संदर्भ के रूप में नहीं पाया जाता है, बल्कि "वास्तविक" पृष्ठों को उसी आईपी के निम्नलिखित अनुरोध के लिए संदर्भित किया जाता था (उपयोगकर्ता 404 पृष्ठ पर क्लासिक मेनू का उपयोग करने की क्षमता रखता है)
  • मैंने Google Analytics में इन पृष्ठों का कोई निशान नहीं देखा है, इसलिए मुझे लगता है कि कोई जावास्क्रिप्ट निष्पादित नहीं की गई है (ट्रैकर 404 सहित सभी पृष्ठों पर मौजूद है)
  • इस बारे में किसी ने हमसे संपर्क नहीं किया, यहां तक ​​कि जब मैंने वेबसाइट के सोशल नेटवर्क में समस्या को लागू किया
  • अधिकांश उपयोगकर्ता उसके बाद भी यात्रा जारी रखते हैं

सभी शोध के तथ्यों से मुझे लगता है कि समस्या चुपचाप ब्राउजर्स में होती है, संभवतः एक बग ऐड-ऑन, एंटीवायरस, एक ब्राउज़र बार या एक भद्दा निर्माता सॉफ्ट द्वारा ट्रिगर किया जाता है जो कल अपडेट किए गए ब्राउज़र में एकीकृत होता है (लेकिन मुझे कोई ऐड-ऑन जारी नहीं हुआ। कल क्रोम के लिए, फ़ायरफ़ॉक्स और आईई)।

क्या यहाँ किसी ने एक ही मुद्दे पर ध्यान दिया है, या अधिक पूर्ण स्पष्टीकरण दिया है?


2
आपके पृष्ठों पर कुछ जावास्क्रिप्ट कोड URL का निर्माण कर रहे हैं, और इसे एक या अधिक बग मिले हैं। सॉफ्टवेयर, खुद को बदले बिना, ब्राउजर अपडेट के कारण व्यवहार बदल सकता है, तारीख / समय के प्रति संवेदनशीलता, 3 भाग स्क्रिप्ट में बदलाव आदि। कोड देखे बिना, यह बताना असंभव है कि वास्तव में क्या गलत है।
पॉइन्टी

3
डिबगिंग के लिए बस एक टिप / विचार: - अपने 404 पेज पर एक स्पष्ट संदेश को बड़े अक्षरों में बताते हुए "यदि आप यह देखते हैं, तो क्या आप कृपया x @ yz का वर्णन कर सकते हैं कि आप यहां कैसे पहुंचे" (संभवतः केवल यदि location.href.search("undefined")सच है तो दिखाया गया है)। - यदि कोई ईमेल नहीं है और आप हर जगह jquery ajax का उपयोग करते हैं, तो jquery ajax कॉल को कस्टम फ़ंक्शन में लपेटें, जो पहले जांचता है कि क्या लौटा डेटा एक JSON है और क्या data.undefinedError मौजूद है और यदि यह कहीं मौजूद है या नहीं (अपने ईमेल में एक चेक बनाएँ) 404 जो {undefinedError:true}अगर undefinedurl में है तो वापस लौटता है )।
डेविड मुल्डर

3
मैं यह भी अनुभव कर रहा हूं और न ही यह कोई बॉट है। दोनों / कैश / xxxx और / अपरिभाषित हालांकि यह केवल क्रोम 19 नहीं है, बल्कि IE 8 और 9. भी है

3
मैं 12 जून से {डोमेन} / अपरिभाषित त्रुटियों का भी अनुभव कर रहा हूं। मैंने अपनी साइट (Google विश्लेषिकी, ऐडसेंस, आदि) से सभी जावास्क्रिप्ट को हटाने की कोशिश की, लेकिन त्रुटियां अभी भी दिखाई देती हैं। हर दिन इनकी संख्या बढ़ रही है। लगभग सभी त्रुटियां उपयोगकर्ताओं द्वारा उत्पन्न की जाती हैं जो विभिन्न संस्करणों के क्रोम का उपयोग करते हैं। मुझे संदेह है कि यह कुछ एक्सटेंशन या ऐड-इन है, लेकिन मैं अपने पीसी पर पुन: पेश नहीं कर सकता। मैंने यह भी उल्लेख किया है कि सभी उपश्रेणी (चित्र, सीएसएस, आदि) के साथ सही पृष्ठ अनुरोध के बाद / अपरिभाषित होने का अनुरोध हमेशा किया जाता है
अल्मास

3
एक और रिपोर्ट, यह भी कि यह 12 जून को शुरू हुई: productforums.google.com/forum/#
.topic

जवाबों:


21

कोई सीधा साधा उत्तर नहीं है।

आपको यह डीबग करना होगा और संभवतः URL में 'अपरिभाषित' शब्द के कारण जावास्क्रिप्ट है। हालाँकि, इसका AJAX होना ज़रूरी नहीं है, यह किसी भी URL को बनाने वाला जावास्क्रिप्ट हो सकता है जो ब्राउज़र द्वारा स्वचालित रूप से हल हो जाता है (उदाहरण के लिए जावास्क्रिप्ट जो छवि टैग पर src विशेषता को सेट करता है, css- छवि विशेषता आदि को सेट करता है)। मैं फ़ायरबग के साथ फ़ायरफ़ॉक्स का उपयोग करता हूं समय के सबसे स्थापित है, तो मेरे निर्देशों को ध्यान में साथ हो जाएगा।

फायरबग प्रारंभिक सेटअप

इसे छोड़ दें यदि आप पहले से ही जानते हैं कि फायरबग का उपयोग कैसे करें।

फायरबग के लिए फ़ायरफ़ॉक्स को स्थापित करने और पुनः आरंभ करने के बाद, आपको फ़ायरबग के अधिकांश 'पैनल' को सक्षम करना होगा। फायरबग खोलने के लिए आपके ब्राउज़र के ऊपरी दाएं कोने में एक छोटी सी आग बग / कीट लग रही चीज होगी या आप F12 दबा सकते हैं। फायरबग टैब 'कंसोल', 'स्क्रिप्ट', 'नेट' पर क्लिक करें और उन्हें पैनल की जानकारी को पढ़कर और खोलकर सक्षम करें। आपको उन्हें ठीक से काम करने के लिए पृष्ठ को ताज़ा करना पड़ सकता है।

डिबगिंग उपयोगकर्ता सहभागिता

उन पृष्ठों में से एक पर नेविगेट करें, जिनके पास फायरबग खुला और नेट पैनल सक्रिय है। नेट पैनल में कुछ विकल्प होंगे: 'Clear', 'Persist', 'All', 'Html', आदि। सुनिश्चित करें कि सभी का चयन किया गया है। पृष्ठ पर कुछ भी न करें और उस पर कुछ भी करने के लिए माउस का प्रयास न करें। अनुरोधों के माध्यम से देखें। अमान्य URL का अनुरोध लाल होगा और संभवत: 404 Not Found (या समान) की स्थिति होगी।

इसे लोड पर देखें? अगले भाग पर छोड़ें

इसे शुरुआती लोड पर न देखें? अपने पृष्ठ का उपयोग करना शुरू करें और यहां जारी रखें।

हर सुविधा पर क्लिक करना शुरू करें, हर चीज पर माउस इत्यादि रखें, अपनी नज़र नेट पैनल पर रखें और जो अनुरोध विफल हों, उन्हें देखें। आपको रचनात्मक होना पड़ सकता है, लेकिन जब तक आप अपने ब्राउज़र को अमान्य अनुरोध नहीं करते, तब तक अपने एप्लिकेशन का उपयोग जारी रखें। यदि पृष्ठ कई अनुरोध करता है, तो इसे खाली करने के लिए नेट पैनल के शीर्ष बाईं ओर स्थित 'साफ़' बटन को हिट करने के लिए स्वतंत्र महसूस करें।

यदि आप पृष्ठ सबमिट करते हैं और एक असफल अनुरोध देखते हैं तो यह वास्तव में जल्दी निकल जाता है, लेकिन फिर इसे खो दें क्योंकि अगला पृष्ठ लोड होता है, नेट पैनल के शीर्ष बाईं ओर 'Persist' पर क्लिक करके दृढ़ता को सक्षम करें।

एक बार जब यह हो जाता है, और यह विचार करना चाहिए कि आपने ऐसा क्या किया है। देखें कि क्या आप इसे फिर से बना सकते हैं। आपके द्वारा यह पता लगाने के बाद कि उपयोगकर्ता इंटरैक्शन क्या बना रहा है, उस कोड में गोता लगाएँ और उन चीज़ों की तलाश शुरू करें जो अमान्य अनुरोध कर रहे हैं।

आप अपने जावास्क्रिप्ट में ब्रेकपॉइंट सेटअप करने के लिए स्क्रिप्ट टैब का उपयोग कर सकते हैं और उनके माध्यम से कदम बढ़ा सकते हैं। $ (एलिमेंट) के माध्यम से किए गए ईवेंट हैंडलर की जांच करें। पुराने क्लिक से / oncick = "" / onfocus = "" आदि जैसे पुराने स्कूल ईवेंट विशेषताओं से .bind / click / focus / etc पर जाएं।

यदि पेज लोड होते ही अनुरोध हो रहा है

यह थोड़ा कठिन हो रहा है खूंटी नीचे। आपको स्क्रिप्ट टैब पर जाने और लोड पर चलने वाली हर स्क्रिप्ट पर ब्रेक पॉइंट जोड़ना शुरू करना होगा। आप इसे जावास्क्रिप्ट लाइन के बाईं ओर क्लिक करके करते हैं।

अपने पृष्ठ को पुनः लोड करें और आपके विराम बिंदु को ब्राउज़र को पृष्ठ लोड करने से रोकना चाहिए। स्क्रिप्ट पैनल पर 'कंटिन्यू' बटन दबाएं। अपने नेट पैनल पर जाएं और देखें कि क्या आपका अनुरोध किया गया था, तब तक जारी रखें जब तक कि वह मिल न जाए। आप इसे नीचे संकीर्ण करने के लिए उपयोग कर सकते हैं जहां अनुरोध को धीरे-धीरे अधिक से अधिक ब्रेक पॉइंट जोड़कर और फिर कार्यों में और बाहर जाने से किया जा रहा है।

आप अपने कोड में क्या देख रहे हैं

कुछ जो निम्नलिखित के समान है:

var url = workingUrl + someObject['someProperty'];

var url = workingUrl + someObject.someProperty;

ध्यान रखें कि someObject एक ऑब्जेक्ट {}, एक सरणी []या आंतरिक ब्राउज़र प्रकारों में से कोई भी हो सकता है। मुद्दा यह है कि ऐसी संपत्ति तक पहुंच बनाई जाएगी जो मौजूद नहीं है।

मुझे कोई 404 / लाल अनुरोध नहीं दिख रहा है

फिर जो कुछ भी हो रहा है वह आपके परीक्षणों से उत्पन्न नहीं हो रहा है। और चीजों का उपयोग करके देखें। मुद्दा यह है कि आप किसी भी तरह अनुरोध करने में सक्षम होना चाहिए। आपको अभी पता नहीं है। इसे नेट पैनल में दिखाना होगा। केवल समय ऐसा नहीं होगा जब आप जो कुछ भी कर रहे हैं वह इसे ट्रिगर नहीं कर रहा है।

निष्कर्ष

वहाँ क्या वास्तव में चल रहा है नीचे खूंटी करने के लिए कोई सुपर आसान तरीका है। हालाँकि जिन विधियों का मैंने उल्लेख किया है उनका उपयोग करके आपको कम से कम पास होने में सक्षम होना चाहिए। यह शायद कुछ ऐसा है जिस पर आप विचार भी नहीं कर रहे हैं।


1
आपके प्रतिक्रिया के लिए धन्येवाद। मैंने पहले से ही फायरबग के साथ और मेरी आईपी पर अपने वार्निश / अपाचे लॉग को बिना सफलता के साथ देखने का प्रयास किया है। Theses "अपरिभाषित" अनुरोध सभी HTML अनुरोधों के 1% से कम का प्रतिनिधित्व करते हैं, और सभी प्रकार के पृष्ठ चिंतित हैं, इसलिए उन्हें ट्रिगर करना वास्तव में कठिन है। लेकिन अगले हफ्ते मैं फिर से कोशिश करूँगा, अलग-अलग ब्राउज़रों के साथ और मैं आपके द्वारा कहे गए इवेंट हैंडलर्स की गहराई से पड़ताल करूँगा। धन्यवाद!
कॉलिनक्स

मैं शर्त लगा रहा हूं कि यह अधिक संभावना है कि यह कुछ ऐसा ही है var url = omeObject['usuallyAURL'];, और यह कुछ अनुरोधित संपत्ति के src या href के रूप में सेट हो रहा है, और इस प्रकार एक रिश्तेदार पथ अनुरोध के रूप में माना जाता है। यानी,<img src="undefined" />
येल

17

इस पोस्ट के आधार पर , मैंने "कॉम्प्लीटली" क्रोम प्लगिन / मैलवेयर को रिवर्स-इंजीनियर किया, और पाया कि यह एक्सटेंशन "सुधारित स्वत: पूर्ण" सुविधा को इंजेक्ट कर रहा है जो हर साइट पर "अपरिभाषित" अनुरोधों को फेंक रहा है जिसमें NAME के ​​साथ एक इनपुट टेक्स्ट फ़ील्ड है। "खोज", "क्ष" और कई अन्य लोगों की आईडी।

मैंने यह भी पाया कि enable.js फ़ाइल (शिकायत की फाइलों में से एक) एक वैश्विक चर की जाँच कर रही थी, जिसे "trymeyes_loaded" कहा जाता है, यह देखने के लिए कि क्या यह पहले से लोड है (एक सिंगलटन की तरह)। इसलिए, इस वैरिएबल को गलत तरीके से सेट करने से प्लगइन निष्क्रिय हो जाता है।

मैलवेयर को अक्षम करने और "अपरिभाषित" अनुरोधों को रोकने के लिए, इसे अपनी साइट पर खोज फ़ील्ड के साथ हर पृष्ठ पर लागू करें:

<script type="text/javascript">
    window.suggestmeyes_loaded = true;
</script>

यह मैलवेयर आपके उपयोगकर्ताओं को "searchcompletion.com" साइट पर भी रीडायरेक्ट करता है, कभी-कभी प्रतिस्पर्धी विज्ञापन दिखाते हैं। लिहाजा, इसे गंभीरता से लिया जाना चाहिए।


मैं इसे अपने लॉग में भी देख रहा हूं, उन पृष्ठों के साथ जहां यह संभवतः जेएस नहीं हो सकता है; मेरा मानना ​​है कि आप 100% सही हैं। हालांकि मुझे आश्चर्य है कि मैलवेयर इस चर का नाम बदलने से पहले कितना समय होगा।
लॉरेंस Dol

मेरे मामले में काफी प्रशंसनीय लगता है। एक अपवाद: अनुरोधित URL: / ForSale / beach_front_property / bronx / undefined / उपयोगकर्ता एजेंट: Mozilla / 5.0 (संगत; Googlebot / 2.1; + google.com/bot.html ) यह निश्चित नहीं है कि googlebot क्यों खोजेगा और उसका अनुसरण क्यों करेगा। जब तक वे कहीं यूआरएल का पता नहीं लगाते और चलते हैं, तब तक एक देखने के लिए है। लेकिन बॉट एक सही
रेफरल

एक और अपवाद: उपयोगकर्ता एजेंट: ओपेरा / 9.80 (विंडोज एनटी 5.1) प्रेस्टो / 2.12.388 संस्करण / 12.16 ओपेरा के लिए भी उपलब्ध नहीं है मुझे बहुत सारे लिनक्स, एंड्रॉइड और एनटी भी दिखाई देते हैं
क्रिस सैटिंगर

@felix एक स्थान पर Googlebot URL के बारे में सीखता है जब ब्राउज़र "फ़ोन होम"
Izkata

8

आपने सही तरीके से स्थापित किया है कि undefinedजावास्क्रिप्ट समस्या से संबंधित है और यदि आपके साइट उपयोगकर्ताओं ने त्रुटि पृष्ठों को देखने के बारे में शिकायत नहीं की है, तो आप निम्नलिखित की जांच कर सकते हैं।

यदि जावास्क्रिप्ट का उपयोग छवि स्थानों को सेट या बदलने के लिए किया जाता है, तो कभी-कभी ऐसा होता है कि यह undefinedURI में अपना रास्ता बनाता है।

जब ऐसा होता है, तो ब्राउज़र खुशी से छवि को लोड करने की कोशिश करेगा (कोई AJAX हेडर नहीं), लेकिन यह संकेत छोड़ देगा: यह एक विशेष Accept:हेडर सेट करता है ; इसके बजाय text/html, text/xml, ...इसका उपयोग करेगा image/jpeg, image/png, ...

एक बार इस तरह के हेडर की पुष्टि हो जाने के बाद, आपने समस्या को केवल छवियों तक सीमित कर दिया है। मूल कारण खोजने में संभवतः कुछ समय लगेगा हालांकि :)

अपडेट करें

डिबगिंग में मदद करने के लिए आप $.fn.attr()डिबगर को ओवरराइड और इनवॉइस कर सकते हैं जब कुछ को अपरिभाषित सौंपा जा रहा है। कुछ इस तरह:

​(function($, undefined) {
    var $attr = $.fn.attr;

    $.fn.attr = function(attributeName, value) {
        var v = attributeName === 'src' ? value : attributeName.src;

        if (v === 'undefined') {
            alert("Setting src to undefined");
        }

        return $attr(attributeName, value);
    }
}(jQuery));

आप सही हैं, हेडर के लिए मैं धन्यवाद दे सकता हूं। जब यह क्रोम अनुरोध होता है, हेडर होते हैं (टिप्पणियों में खराब स्वरूपण के लिए खेद है) Host: statistiks.fr User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5 Accept: */* Referer: http://statistiks.fr/basket-ball/[..] Accept-Encoding: gzip,deflate,sdch [...] लेकिन IE9 के साथ, एक छवि के हेडर को स्वीकार करें: Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 अगले सप्ताह मुझे छवियों की ओर जांच करने में समय लगेगा। धन्यवाद!
कॉलिनक्स

@colinux समस्या को आसान बनाने में आपकी सहायता करने के लिए मैंने अपना उत्तर अपडेट किया है। मुझे बताएं कि क्या आपको आवेदन करने में कोई समस्या है।
जाक

3

कुछ तथ्य जो स्थापित किए गए हैं, विशेष रूप से इस धागे में: http://productforums.google.com/forum/# ​​.msg/chrome/G1snYHaHSOc/p8RLCohxz2kJ

यह उन पृष्ठों पर होता है जिनकी कोई जावास्क्रिप्ट बिल्कुल नहीं होती है। यह साबित करता है कि यह ऑन-पेज प्रोग्रामिंग त्रुटि नहीं है

उपयोगकर्ता इस समस्या से अनजान है और काफी खुशी से ब्राउज़ करना जारी रखता है।

यह उस व्यक्ति द्वारा पृष्ठ पर जाने के कुछ सेकंड बाद होता है।

यह हर किसी के लिए नहीं होता है।

कई ब्राउज़रों पर होता है (क्रोम, IE, फ़ायरफ़ॉक्स, मोबाइल सफारी, ओपेरा)

कई ऑपरेटिंग सिस्टम (लिनक्स, एंड्रॉइड, NT) पर होता है

कई वेब सर्वरों पर होता है (IIS, Nginx, Apache)

मेरे पास लिंक के बाद Googlebot का एक मामला है और उसी रेफ़र का दावा है। वे बस चालाक होने की कोशिश कर रहे होंगे और ब्राउज़र ने इसे उस माताओं के पास भेज दिया जिसने जांच के लिए एक बॉट स्थापित किया था।

मैं इस प्रस्ताव से काफी आश्वस्त हूं कि यह प्लगइन्स के कारण होता है। ईमानदारी से एक है, लेकिन यह ओपेरा का समर्थन नहीं करता है। वहाँ कई अन्य हो।

हालांकि मोबाइल ब्राउज़र प्लगइन सिद्धांत के खिलाफ वजन करते हैं।

Sysadmins ने पृष्ठ पर कुछ जावास्क्रिप्ट जोड़कर एक बड़ी गिरावट की सूचना दी है।

यहाँ nginx के लिए मेरा समाधान है:

location ~ undefined/?$  {
  return 204;
}

यह "हाँ ठीक है, लेकिन आपके लिए कोई सामग्री नहीं" देता है।

यदि आप website.com/some/page पर हैं और आप (किसी तरह) website.com/some/page/undefined पर नेविगेट करते हैं तो ब्राउज़र URL को बदले हुए के रूप में दिखाएगा, लेकिन पेज रीलोड भी नहीं करेगा। पिछला पेज वैसा ही रहेगा जैसा खिड़की में था।

यदि किसी कारण से यह उपयोगकर्ताओं द्वारा अनुभव किया गया कुछ है, तो उनके पास एक स्वच्छ दोपहर का अनुभव होगा और यह जो कुछ भी वे कर रहे थे उसे परेशान नहीं करेंगे।


आपके समाधान ने निश्चित रूप से मुझे इस के पतन से बचाया। ब्राउज़र मिश्रित सामग्री (एसएसएल और सादे) के बारे में शिकायत कर रहा था, अब यह हल हो गया है, धन्यवाद।
मोरिट्ज़

2

यह एक दौड़ की स्थिति की तरह लगता है जहां एक चर उपयोग करने से पहले ठीक से आरंभीकृत नहीं हो रहा है। यह मानते हुए कि आपकी टिप्पणियों के अनुसार यह AJAX का मुद्दा नहीं है, नीचे सूचीबद्ध इस तरीके का एक जोड़ा होगा।

हुकअप एक जावास्क्रिप्ट अपवाद लकड़हारा : यह आपको अपने लॉग में सभी यादृच्छिक जावास्क्रिप्ट अपवादों को पकड़ने में मदद करेगा। ज्यादातर समय प्रोग्रामेटिक एरर यहां बबल करेगा। इसे किसी भी स्क्रिप्ट से पहले रखें। आपको सर्वर पर इन्हें पकड़ने और बाद में विश्लेषण के लिए अपने लॉग में प्रिंट करने की आवश्यकता होगी। यह आपकी रक्षा की पहली पंक्ति है। यहाँ एक उदाहरण है:

window.onerror = function(m,f,l) {
    var e = window.encodeURIComponent;
    new Image().src = "/jslog?msg=" + e(m) + "&filename=" + e(f) + "&line=" + e(l) + "&url=" + e(window.location.href);
};

Window.location की खोज करें : इन उदाहरणों में से प्रत्येक के लिए आपको अपने विंडो के लिए अपरिभाषित कॉन्टेक्ट्स / एपेंडर्स के लिए लॉगिंग या चेक जोड़ना चाहिए। उदाहरण के लिए:

function myCode(loc) {
    // window.location.href = loc; // old 
    typeof loc === 'undefined' && window.onerror(...); //new
    window.location.href = loc; //new
}

या थोड़ा क्लीनर:

window.setLocation = function(url) { 
   /undefined/.test(url) ? 
         window.onerror(...) : window.location.href = url;       
}

function myCode(loc) {
    //window.location.href = loc; //old
    window.setLocation(loc); //new
} 

यदि आप इस स्तर पर स्टैकट्रैक प्राप्त करने में रुचि रखते हैं, तो इस पर एक नज़र डालें: https://github.com/eriwen/javascript-stacktrace

सभी अपरिभाषित अपरिभाषित लिंक को पकड़ो : window.location के अलावा केवल एक ही चीज़ शेष DOM लिंक स्वयं है। तीसरा कदम अपने अमान्य URL पैटर्न के लिए सभी अनहेल्ड DOM लिंक की जाँच करना है (आप इस अधिकार को jQuery के लोडिंग खत्म होने के बाद, पहले बेहतर तरीके से संलग्न कर सकते हैं):

$("body").on("click", "a[href$='undefined']", function() {
    window.onerror('Bad link: ' + $(this).html()); //alert home base
});

आशा है कि यह उपयोगी है। खुश डिबगिंग।


1

मैं सोच रहा था कि यह एक adblocker मुद्दा हो सकता है। जब मैं आईपी पते से लॉग के माध्यम से खोज करता हूं तो ऐसा प्रतीत होता है कि किसी विशेष उपयोगकर्ता द्वारा /folder/page.html के लिए प्रत्येक अनुरोध / फ़ोल्डर / अपरिभाषित के अनुरोध के बाद है


मुझे लगता है कि यह क्लाइंट पर सॉफ्टवेयर से संबंधित है। हाल के लॉग्स के आधार पर, यह केवल विशिष्ट आईपी एड्रेस के लिए होता है और यह उन लोगों के लिए भी लगातार होता है। मुझे उपयोगकर्ता एजेंट स्ट्रिंग में BTRS123368 और AskTbORJ / 5.15.2.23037 दिखाई देता है, शायद यह उन में से किसी एक से संबंधित है।
जोरेट शिपर्स

मुझे कुछ और परिणाम मिले: उपयोगकर्ता एजेंट में फ़नवेबप्रोडक्ट्स वाला कोई व्यक्ति / अपरिभाषित URL का भी अनुरोध कर रहा है।
जोरिट शिपर्स

0

मुझे नहीं पता कि यह मदद करता है, लेकिन मेरी वेबसाइट एक विशेष * .webp छवि फ़ाइल को कई ब्राउज़रों में लोड होने के बाद अपरिभाषित के साथ बदल रही है। क्या आपकी साइट वेबप छवियों की मेजबानी कर रही है?


0

मुझे इसी तरह की समस्या थी (लेकिन /nullकंसोल में 404 त्रुटियों के साथ ) कि @ andrew-martinez के जवाब ने मुझे हल करने में मदद की।

पता चलता है कि मैं imgएक खाली srcफ़ील्ड के साथ टैग का उपयोग कर रहा था :

<img src="" alt="My image" data-src="/images/my-image.jpg">

मेरा विचार ब्राउज़र को पेज लोड पर छवि को मैन्युअल रूप से लोड करने से रोकने के लिए था, बाद में जावास्क्रिप्ट (लेज़ी लोडिंग) के साथ डेटा-src विशेषता से src विशेषता को सेट करके लोड करने के लिए। लेकिन जब iDangerous Swiper के साथ संयुक्त किया गया, तो उस पद्धति में त्रुटि हुई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.