गुप्त "स्क्रिप्ट त्रुटि।" क्रोम और फ़ायरफ़ॉक्स में जावास्क्रिप्ट में सूचना दी


199

मेरे पास एक स्क्रिप्ट है जो मेरी वेबसाइट पर जावास्क्रिप्ट त्रुटियों का पता लगाती है और उन्हें रिपोर्टिंग के लिए मेरे बैकएंड पर भेजती है। यह पहली त्रुटि का सामना करना पड़ा, माना जाता है कि लाइन नंबर, और समय।

सिद्धांत को शामिल करने के लिए संपादित करें:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">

...

<script type="text/javascript">
//<![CDATA[
// for debugging javascript!
(function(window){
    window.onerror = function(msg, url, ln) {
        //transform errors
        if (typeof(msg) === 'object' && msg.srcElement && msg.target) {
            if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){
                msg = 'Error loading script';
            }else{
                msg = 'Event Error - target:' + msg.target + ' srcElement:' + msg.srcElement;
            }
        }

        msg = msg.toString();

        //ignore errors
        if(msg.indexOf("Location.toString") > -1){
            return;
        }
        if(msg.indexOf("Error loading script") > -1){
            return;
        }

        //report errors
        window.onerror = function(){};
        (new Image()).src = "/jserror.php?msg=" + encodeURIComponent(msg) + "&url=" + encodeURIComponent(url || document.location.toString().replace(/#.*$/, "")) + "&ln=" + parseInt(ln || 0) + "&r=" + (+new Date());
    };
})(window);
//]]>
</script>

इस स्क्रिप्ट की वजह से, मैं अपनी साइट पर होने वाली किसी भी जावास्क्रिप्ट त्रुटियों के बारे में गहराई से जानता हूं। सबसे बड़े अपराधियों में से एक "स्क्रिप्ट त्रुटि है।" क्रोम 10+ और फ़ायरफ़ॉक्स 3+ में लाइन 0. पर । यह त्रुटि मौजूद नहीं है (या इंटरनेट एक्सप्लोरर में कुछ और कहा जा सकता है?)।

सुधार (5/23/2013): यह "स्क्रिप्ट त्रुटि, लाइन 0" त्रुटि अब IE7 और संभवतः IE के अन्य संस्करणों में दिखाई दे रही है। संभवतः हाल ही में IE सुरक्षा पैच का एक परिणाम के रूप में यह व्यवहार पहले से मौजूद नहीं था।

क्या किसी को कोई अंदाजा नहीं है कि इस त्रुटि का क्या मतलब है या क्या कारण हैं यह मेरे समग्र पगेलोड के लगभग 0.25% पर होता है, और रिपोर्ट की गई आधी त्रुटियों का प्रतिनिधित्व करता है।


आपका सिद्धांत क्या है? यदि आप एक एक्सएचटीएमएल सिद्धांत की घोषणा नहीं कर रहे हैं, तो आपको सीडीएटीए की आवश्यकता नहीं है, जो हो सकता है कि स्क्रिप्ट त्रुटियां क्यों हैं।
जेम्स

मैं मदद की सराहना करता हूं ... सिद्धांत में जोड़ा गया: XHTML। हालांकि, हालांकि, केवल 0.25% पगेलोड पर ही हो रहा है ... मुझे लगता है कि यह कुछ अधिक विदेशी है।
माइक शेरोव

3
@ संजय: ज़िक्र बस। XHTML सिद्धांत अभी भी HTML पार्सर है। आपको application/xhtml+xmlइसे XHTML पार्सर में चलाने के लिए सामग्री भेजनी होगी (जैसे XHTML विनिर्देश कहता है)। ऐसी बहुत सारी सामग्री है जो XHTML होने का दावा करती है, लेकिन सामान्य HTML सिद्धांत भेजती है। गलत तरीके से सामग्री बनाने वाले XHTML का उपयोग करने के कारण, ब्राउज़रों ने केवल XML पार्सर का उपयोग करने का निर्णय लिया application/xhtml+xml(यह वास्तव में सख्त पार्सर है)। Hixie.ch/advocacy/xhtml और webdevout.net/articles/beware-of-xhtml कहते हैं क्यों एक्सएचटीएमएल साथ HTML पार्सर का उपयोग नहीं।
कोनराड बोरोस्की

11
आह ... भगवान के प्यार के लिए, इसे पढ़ने वाला कोई भी, कृपया अपनी त्रुटि संदेश बताएं कि क्या गलत हुआ! अपने आप को इसे लिखने के 30 सेकंड के प्रयास से बचाकर, आप विश्व मानव-वर्ष बर्बाद कर रहे हैं!
रोमन स्टार्कोव

1
आप एरर लोडिंग स्क्रिप्ट एरर को नजरअंदाज कर रहे हैं। क्यों? क्या वे उपेक्षा करने के लिए सुरक्षित हैं?
rampr

जवाबों:


261

"स्क्रिप्ट त्रुटि।" फ़ायरफ़ॉक्स, सफारी और क्रोम में तब होता है जब कोई अपवाद ब्राउज़र की समान मूल नीति का उल्लंघन करता है - अर्थात जब त्रुटि उस स्क्रिप्ट में होती है जिसे वर्तमान पृष्ठ के डोमेन के अलावा किसी अन्य डोमेन पर होस्ट किया जाता है।

यह व्यवहार जानबूझकर किया जाता है, ताकि बाहरी डोमेन पर सूचनाओं को लीक करने से रोका जा सके। यह आवश्यक क्यों है, इसके उदाहरण के लिए, आकस्मिक रूप से आने की कल्पना करें evilsite.com, जो पृष्ठ के साथ कार्य करता है <script src="yourbank.com/index.html">। (हाँ, हम उस स्क्रिप्ट टैग को html में इंगित कर रहे हैं, JS नहीं)। यह एक स्क्रिप्ट त्रुटि के परिणामस्वरूप होगा, लेकिन त्रुटि दिलचस्प है क्योंकि यह हमें बता सकती है कि आप लॉग इन हैं या नहीं। यदि आप लॉग इन हैं, तो त्रुटि हो सकती है 'Welcome Fred...' is undefined, जबकि यदि आप नहीं हैं तो यह हो सकता है 'Please Login ...' is undefined। उन पंक्तियों के साथ कुछ।

यदि evilsite.com शीर्ष 20 या तो बैंक संस्थानों के लिए ऐसा करता है, तो उन्हें इस बात का बहुत अच्छा विचार होगा कि आप किन बैंकिंग साइटों पर जाते हैं, और अधिक लक्षित फ़िशिंग पृष्ठ प्रदान कर सकते हैं। (यह सिर्फ एक उदाहरण है, लेकिन यह दिखाता है कि ब्राउज़र को किसी भी डेटा को डोमेन सीमाओं को पार करने की अनुमति क्यों नहीं देनी चाहिए ।)

मैंने इसे सफारी, क्रोम और फ़ायरफ़ॉक्स के नवीनतम संस्करणों में परीक्षण किया है - वे सभी ऐसा करते हैं। IE9 नहीं करता है - यह एक्स-मूल अपवादों को समान-मूल वाले के समान मानता है। (और ओपेरा onerror का समर्थन नहीं करता है।)

घोड़ों के मुंह से: WebKit स्रोत जो ऑन्सर () के अपवादों को पारित करते समय मूल की जांच करता है । और फ़ायरफ़ॉक्स स्रोत जो जांचता है

अद्यतन (10/21/11) : फ़ायरफ़ॉक्स बग जो इस समस्या को ट्रैक करता है उसमें ब्लॉग पोस्ट का लिंक शामिल है जिसने इस व्यवहार को प्रेरित किया।

अद्यतन (12/2/14) : अब आप स्क्रिप्ट टैग पर एक crossoriginविशेषता निर्दिष्ट करके और सर्वर को उचित CORS HTTP प्रतिक्रिया हेडर भेजने वाले कुछ ब्राउज़रों पर पूर्ण क्रॉस-डोमेन त्रुटि रिपोर्टिंग सक्षम कर सकते हैं ।


3
इसके लिए धन्यवाद। मैं थोड़ा स्पष्टीकरण चाहूंगा। मुझे उन लिपियों से विस्तृत त्रुटि संदेश दिखाई देते हैं जिन्हें मैं अपने पृष्ठ पर हर समय शामिल करता हूं। उदाहरण के लिए, यदि मैं Google के सीडीएन से jQuery को शामिल करता हूं और इसका उपयोग अपने पेज पर मौजूद गैर-मौजूद तत्व को हेरफेर करने के लिए करता हूं, तो मुझे एक ऑनरोर मिलता है जो Google के CDN को इंगित करता है। क्या आप कह रहे हैं कि "स्क्रिप्ट त्रुटि।" इसलिए हो रहा है क्योंकि दूरस्थ स्क्रिप्ट अपवाद को फेंक रही है?
माइक शेरोव

150
आपने सोचा होगा कि किसी ने कहा कि "एक दूरस्थ स्क्रिप्ट में एक त्रुटि हुई है जो एक ही मूल नीति के कारण छिपाई गई थी" कहने के बजाय, आपको यह सोचकर छोड़ देना चाहिए कि क्या गलत हुआ, एह? ...
रोमन स्टार्कोव

3
यदि मेरे पास Google के CDN का उपयोग करने के बजाय मेरे डोमेन पर jquery की मेजबानी करता है तो इसका मतलब यह है कि क्या मुझे बेहतर अपवाद मिलेगा?
पॉल बिगगर

6
छोटा अपडेट। यह तब भी होता है जब फ़ाइल के माध्यम से पृष्ठ लोड किया जाता है: // और स्क्रिप्ट को eval () के माध्यम से चलाया जाता है। मामूली उपयोग-मामला है, लेकिन फिर भी :)
विल्म मुल्डर

6
कुछ जांच के बाद मैंने देखा कि Script Error.उपयोगकर्ता द्वारा सफारी एक्सटेंशन (शायद फ़ायरफ़ॉक्स प्लग-इन के लिए भी ऐसा ही) स्थापित किया गया है, जो जावास्क्रिप्ट कोड को त्रुटियों के साथ इंजेक्ट करता है
एलेक्स हॉपेन

49

उन लोगों के लिए एक अपडेट जो भविष्य में इस सवाल पर ठोकर खाएंगे: ब्रूफो जवाब के साथ सही है और इसके लिए कोई समाधान नहीं है।

स्पष्ट रूप से अन्य इस सीमा में ठोकर खाई और फिक्स के लिए अनुरोध करने वाले कुछ कीड़े फ़ायरफ़ॉक्स के लिए दायर किए गए: बग 69301 और WebKit के लिए: बग 70574

अच्छी खबर यह है कि बग को फ़ायरफ़ॉक्स 13 के रिलीज के साथ फ़ायरफ़ॉक्स के लिए हल किया गया है। यह है कि आप इसका उपयोग कैसे करते हैं:

<script src="http://somremotesite.example/script.js" crossorigin>

crossoriginके बराबर है crossorigin=anonymousऔर ब्राउज़र से कहता है कि वह क्रेडेंशियल्स भेजे बिना स्क्रिप्ट के एक कॉर्स्स को प्राप्त करे

आपको यह सुनिश्चित करना होगा कि स्क्रिप्ट को Access-Control-Allow-OriginHTTP हेडर मान के साथ भेजा गया है जो अनुरोध डोमेन से मेल खाता है, जैसे,

Access-Control-Allow-Origin: http://myhomesite.example
Access-Control-Allow-Origin: *

अन्यथा ब्राउज़र स्क्रिप्ट लोड करना रद्द कर देगा

अपाचे के लिए:

Header set Access-Control-Allow-Origin "*"

(और अन्य वेब सर्वर के लिए CORS उदाहरण देखें ।)

यदि आप PHP में स्क्रिप्ट भेज रहे हैं:

header('Access-Control-Allow-Origin', 'http://myhomesite.example');

मैंने इसका परीक्षण किया है और यह उम्मीद के मुताबिक काम करता है। script.js से सभी त्रुटियों को window.onerrorहैंडलर द्वारा संदेश, फ़ाइल और लाइन विवरण के साथ पकड़ा जाएगा ।

WebKit बग अभी तक तय नहीं किया गया है, लेकिन एक पैच प्रस्तावित किया गया है (और उसी समाधान का उपयोग करता है)। उम्मीद है कि जल्द ही सुधार जारी किया जाएगा।

यहाँ CORS के बारे में अधिक जानकारी: http://enable-cors.org/


2
अच्छा सारांश: blog.errorception.com/2012/12/…
sam

1
पुनः वेबकिट करें। यदि आप इसका मतलब निकालते
UpTheCreek

3
मान लें कि हम mysite.com/index.php में JS त्रुटियों की निगरानी करना चाहते हैं, जिसमें बाहरी पार्टी से JS फ़ाइल शामिल है (जैसे API प्रदाता का सर्वर apiprovider.com/api.js); इस स्थिति में हमारे पास उस सर्वर तक पहुंच नहीं है, इसलिए हम "एक्सेस-कंट्रोल-अलाउंस-ओरिजिन" हेडर नहीं जोड़ सकते हैं। क्या एपीआई.जेएस से उत्पन्न त्रुटि संदेश प्राप्त करने का कोई तरीका है?
यूजीनियो

23

यह पता लगाने के लिए काफी एक सा लगा।

हमने कोशिश करने और इसे हल करने के लिए सामान का एक गुच्छा किया, जिसमें Ajax के माध्यम से WHOLE दस्तावेज़ बॉडी को वापस हमारे सर्वर पर डंप करने और इसे जानने का प्रयास करना शामिल है।

मैं अभी भी अनिश्चित हूं कि "स्क्रिप्ट त्रुटि" का क्या कारण है। (अवधि के साथ BTW, यही है कि यह हमारे अजाक्स लकड़हारे में कैसे दिखता है) फ़ायरफ़ॉक्स में, लेकिन क्रोम में, हम इसे नीचे करने में सक्षम थे ...

ड्रम रोल...

Google Chrome की ऑटो ट्रांसलेट सुविधा।

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

आपको शीर्ष पर बार पूछना चाहिए कि क्या आप क्रोम को आपके लिए पृष्ठ का अनुवाद करना चाहते हैं।

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

भले ही कंसोल में त्रुटि कुछ अपरिचित थी, लेकिन जो संदेश window.onerror को भेजा जा रहा था, वह "स्क्रिप्ट त्रुटि" था।

वैसे भी, एक इलाज है।

http://googlewebmastercentral.blogspot.com/2007/12/answering-more-popular-picks-meta-tags.html

<meta name="google" content="notranslate"/>

यह 2 चीजें करेगा (जहां तक ​​हम जानते हैं, शायद अधिक?):

a) क्रोम में पॉप अप करने से अनुवाद बार अक्षम करें।

ख) पृष्ठ का अनुवाद करने में अक्षम करें।

हमारी स्थिति में वैसे भी, यह इन "स्क्रिप्ट त्रुटि" में से एक टन को हल करता है। हम अनुभव कर रहे थे।

इस पोस्ट में वर्तनी की गलतियों को माफ करें, मैं अभी भी इसे लिखने वाले क्रोम में एक गैर-अंग्रेजी मोड पर हूं, और वर्तनी परीक्षक अंग्रेजी में सेट नहीं है;) वापस स्विच करने का समय।

का आनंद लें!


4
सीधा कारण शायद यह है कि अनुवादक स्क्रिप्ट एक अलग डोमेन से फिर वेब पेज से चलाया गया था, और onerror(कम से कम फ़ायरफ़ॉक्स में) बस ऐसे मामले में "स्क्रिप्ट त्रुटि" कहता है।
TGR

10

निम्न% के कारण, आप मान सकते हैं कि वे सामान्य उपयोगकर्ता नहीं हैं। संभवतः उपयोगकर्ता, बुकमार्क, बुकमार्क या शायद वेबसाइट पर कंसोल के साथ गड़बड़ कर रहे हैं। किसी पृष्ठ का संपूर्ण HTML होना जहां ऐसा होता है, इस सिद्धांत का परीक्षण करने में मदद कर सकता है। साथ ही पूरी त्रुटि। यह आपको एक यूआरएल देना चाहिए, क्या यह हमेशा एक ही है? क्या लाइन वास्तव में 0 या सिर्फ अपरिभाषित है?

मुझे नहीं लगता कि ऑनरोर में डिफ़ॉल्ट मान सेट करना एक अच्छा विचार है और 0 शायद parseInt(ln || 0)तब आता है जब त्रुटि वास्तव में पृष्ठ पर नहीं होती है (ऊपर उदाहरण देखें)।

यदि यह देखने के लिए कि क्या लाइन को जावास्क्रिप्ट में या तो उन त्रुटियों को अनदेखा करने के लिए जाना जाता है (क्योंकि वे संभवतः आपके अपने कोड से नहीं आते हैं) या सर्वर-साइड कोड में अलग से उनकी देखभाल करने के लिए, imo, बेहतर होगा। ।

=== EDIT === समझे: http://www.xavierm02.net/AZE/ user.js फ़ाइल स्थापित करें (मैंने इसे क्रोम पर किया था लेकिन इसे फ़ायरफ़ॉक्स पर भी काम करना चाहिए)। फिर उसी ब्राउजर पर html पेज खोलें। यह आपको त्रुटि दिखाएगा (मैंने केवल उस रिपोर्ट को सर्वर पर रिपोर्टिंग करने के लिए बदल दिया है, वह इसे पृष्ठ पर लिखता है)। 0 के रूप में लाइन नंबर के साथ।


URL मेरी साइट के पृष्ठों के बीच समान रूप से वितरित है। मैं एफएफ और क्रोम को देखते हुए बुकमार्क या एक्सटेंशन या थीम भी अनुमान लगा रहा हूं। हालाँकि, मैं इस त्रुटि संदेश को सुरक्षित रूप से अनदेखा करने से पहले पुनर्प्राप्त करने में सक्षम होना चाहूंगा।
माइक शेरोव

अपनी लाइन को बदलें (new Image()).src = "/jserror.php?msg=" + encodeURIComponent(msg) + "&url=" + encodeURIComponent(url) + "&ln=" + parseInt(ln) + "&r=" + (+new Date());और आपको संभवतः कोई url नहीं दिखाई देगा (क्योंकि यह एक एक्सटेंशन या कुछ स्थानीय है इसलिए ब्राउज़र आपको नहीं दिखाता है) और कोई लाइन नंबर नहीं है।
xavierm02

और btw, आपको जेएस के बजाय अपने सर्वर के साथ टाइमस्टैम्प प्राप्त करना चाहिए (और शायद टाइमस्टैम्प के बजाय केवल संस्करण प्राप्त करना चाहिए)।
xavierm02

1
वास्तव में, जेएस को सिर्फ कच्चा डेटा भेजना चाहिए और पीएचपी को लोड त्रुटियों और इतने पर ध्यान नहीं देना चाहिए।
xavierm02

मैं JS की ओर से कुछ प्रोसेसिंग करता हूं क्योंकि मैं केवल FIRST प्रासंगिक त्रुटि की रिपोर्ट करना चाहता हूं, इसलिए मैं असली त्रुटि आने के बाद onerror फ़ंक्शन को फिर से असाइन करता हूं। यह उन त्रुटियों को भी रोकता है जो मेरे सर्वर से ddos'h से लूप में हो रही हैं। ।
माइक शेरोव

3

मुझे एक समान समस्या थी: मेरी स्क्रिप्ट्स एक उपडोमेन द्वारा परोसी जाती हैं और एक ही मूल प्रतिबंध के तहत आती हैं। हालाँकि, मैंने इसे हल किया:

1) हर स्क्रिप्ट टैग को इस तरह जोड़ना:

<script type="text/javascript" src="http://subdomain.mydomain.tld" crossorigin="*.mydomain.tld" />

2) अपाचे httpd.conf को हर vhost के अंदर जोड़कर संशोधित करना (आपको enbable mod_headers चाहिए):

<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*.mydomain.tld"
</IfModule>

उम्मीद है की यह मदद करेगा ...

संपादित करें

मेरे एक सर्वर पर मैं इसे छोड़कर केवल कार्यात्मक बनाने में सक्षम नहीं था

*.mydomain.tld

द्वारा

*

विस्तारित जानकारी को संभावित रूप से अनुमति देने के साथ खामियों से अवगत रहें। CORS, समान-मूल, img & फोंट, cdn पर प्रलेखन उपलब्ध है, लेकिन स्क्रिप्ट टैग के बारे में बहुत कम विवरण क्रॉसोरिगिन उपलब्ध हैं।


1
* ".mydomain.tld" क्रॉसोरिगिन विशेषता डेवलपर
icenac

1

Chrome में, मुझे HTML और जावास्क्रिप्ट दोनों से लोड करने पर "स्क्रिप्ट त्रुटि" (लाइन 0 पर) मिलती है file://। फ़ायरफ़ॉक्स में ऐसा नहीं होता है। संभवत: क्रोम के अत्यधिक-मूल संरक्षण से अधिक।

HTTP पर एक ही HTML और जावास्क्रिप्ट लोड करते समय सब अच्छा है।


1

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

window.onerror = function (msg, url, lineNo, columnNo, error) {
    var string = msg.toLowerCase();
    var substring = "script error";
    if (string.indexOf(substring) > -1){
        alert('Script Error: See Browser Console for Detail');
    } else {
        alert(msg, url, lineNo, columnNo, error);
    }
  return false;
};

आप इसे कर्म पर कैसे लॉग करते हैं?
कॉमनसेंसियनकोड

क्या आप बता रहे हैं कि ब्राउज़र कंसोल में विवरण हैं, लेकिन ऑनरोर नहीं है?
माइकल फ्रीजिम


0

IOS पर क्रोम और फ़ायरफ़ॉक्स दोनों सफारी वेबव्यू पर आधारित हैं, लेकिन लोड किए गए प्रत्येक पेज में कस्टम स्क्रिप्ट का एक गुच्छा डालें। अगर उन लिपियों में से कुछ में कुछ गलत हो जाता है, तो यह रिपोर्ट के Script error on line 0रूप में अच्छी तरह से हो जाता है । (ब्राउज़र सम्मिलित स्क्रिप्ट की गणना क्रॉस मूल के रूप में अच्छी तरह से होती है)

जैसा कि मैंने नीचे ट्रैक किया है और इस अन्य एसओ थ्रेड में दस्तावेज किया गया है, iOS पर क्रोम और फ़ायरफ़ॉक्स दोनों में एसवीजी तत्वों को सही ढंग से संभालने वाली अपनी कस्टम स्क्रिप्ट में समस्याएँ हैं। तो इस धागे में अन्य सभी उत्तरों के अलावा: यदि आप अपने पेज पर एसवीजी तत्वों और <a>टैग के अंदर <svg>टैग का उपयोग करते हैं, तो यह Script errorsआईओएस क्रोम और आईओएस फ़ायरफ़ॉक्स में सूचित किया जाएगा ।


-1

मैं आपको बताता हूं कि सफारी (वेबकिट) पर मेरे लिए क्या तय किया गया था: अगर मैं वास्तव में पेज पर जेएस कॉलबैक रूटीन डालता हूं , तो मुझे पूरी जानकारी मिल जाएगी। यदि मैं इसे एक टैग के माध्यम से .js फ़ाइल में शामिल करता हूं, तो मुझे बस "स्क्रिप्ट त्रुटि" त्रुटि (बिना लिननंबर, आदि के साथ) मिलती है।

हो सकता है कि यह ब्रूफो ने कही गई बातों से संबंधित हो।

अन्वय, इसलिए अब मेरे पास पेज में एक छोटा कॉलबैक है, और फिर पेज के बाहर की बाकी फाइल।


-2

मैंने थोड़ी खोज की है और ऐसा प्रतीत होता है कि "स्क्रिप्ट त्रुटि" का अर्थ है कि यह एक फ़ाइल को लोड करने में समस्या है जो इसे देखने के लिए कहा गया था। यह क्लाइंट की ओर से एक कैशिंग समस्या हो सकती है, या यह ओवरलोडिंग के कारण सर्वर की समस्या हो सकती है।

यह सबसे अधिक संभावना है कि ऐसा कुछ होता है जहां स्क्रिप्ट ही वह फ़ाइल है जिसे वह लोड नहीं कर सकता है, इसलिए लाइन 0 पर होने वाली त्रुटि।

<script type="text/javascript" src="somescript.js"></script>

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

1
जब एक स्क्रिप्ट लोड करने में विफल रहता है तो आपने कैसे पता लगाया? मुझे याद है कि एक बिंदु पर मुझे परेशानी हो रही थी। script.onerrorकुछ ब्राउज़रों में अनुपलब्ध स्क्रिप्ट के लिए निकाल नहीं दिया गया था।
चार्ली कियान

"स्रोत त्रुटि।" (थोड़ा-ई) वेबकिट और एफएफ दोनों स्रोतों में दिखाई देता है। मेरा जवाब ऊपर देखिए। fwiw।
ब्रूफो

-3

मैंने अनुभव किया है

लिपि की गलती। पंक्ति ०

ग्राहक ब्राउज़रों में त्रुटि होने पर कुछ समय के लिए हमारे सर्वर पर वापस रिपोर्ट की जा रही है। कल पहली बार ( "use strict";हमारी जावास्क्रिप्ट में पेश करने के बाद ) मैं विंडोज 7 पर सफारी और क्रोम में इस मुद्दे को दोहराने में सक्षम था। अलर्ट के साथ हमारे कोड को लैटर करने के बाद () स्टेटमेंट मैंने इस त्रुटि को एक अपरिभाषित चर के उपयोग के लिए ट्रेस किया! उदाहरण के लिए xx = 123;जहां xx को किसी varकथन के साथ परिभाषित नहीं किया गया है ।

सफारी ने इसकी सूचना दी

संदर्भ: सख्त मोड वैश्विक संपत्ति 'xx' के निहित निर्माण की मनाही

वेब इंस्पेक्टर के भीतर, लेकिन window.onerror फ़ंक्शन का पता लगा रहा था

लिपि की गलती। पंक्ति ०


-11

ग्रेपिंग फ़ायरफ़ॉक्स के सोर्स कोड से पता चलता है कि वहाँ कोई नहीं है "Script Error."। इस प्रकार, यह बहुत संभावना है कि आपकी साइट पर कुछ स्क्रिप्ट इस तरह एक बिना किसी त्रुटि के फेंक रही है:

throw new Error('Script Error.');

संभवतः यह कथन केवल फ़ायरफ़ॉक्स और क्रोम में पहुंच गया है।

यकीन नहीं है कि हालांकि कोई लाइन नंबर नहीं है। शायद कुछ eval()मुद्दा?


1
जैसा कि आपने सिफारिश की है, मैंने इसे ठीक से फेंकने की कोशिश की है। यह "स्क्रिप्ट त्रुटि" की रिपोर्ट नहीं करता है। यह रिपोर्ट करता है "थ्रोन एक्सेप्शन नहीं पकड़ा गया: स्क्रिप्ट त्रुटि।" हालांकि अच्छा लगा।
माइक शेरोव

यह उपयोगकर्ता द्वारा इंस्टॉल किए गए एक्सटेंशन में से एक भी हो सकता है जो त्रुटि पैदा कर रहा है।
चार्ली कियान

1
बिल्कुल नहीं। यदि आप सही पट्टिका में देखते हैं, तो आप वेब पर "स्क्रिप्ट त्रुटि" देखेंगे।
अमलगोविंस

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