2009-06-17 9 views
6

मैं IE 6 में निम्न त्रुटि हो रही है:'अमान्य तर्क' एक रेखा संख्या में IE में त्रुटि, जो मौजूद नहीं है

Line: 454 
Char: 13 
Error: Invalid Argument 
Code: 0 
URL: xxxxx/Iframe1.aspx 

और मैं के लिए मुझे के जीवन नहीं मिल सकता है क्या यह कारण है।

यह केवल एक ऐसी स्थिति में होता है जहां मेरे पास एक मुख्य पृष्ठ होता है जिसमें कई IFrames होते हैं, और यह तब होता है जब मेरे पास एक विशेष IFrame (त्रुटि संदेश में यूआरएल द्वारा इंगित किया गया है), और IFrame अदृश्य है लोड होने के समय।
मैं इसे वहाँ से ऊपर संकुचित कर दिया है, लेकिन मैं अभी भी अधिक विशिष्ट कुछ भी नहीं मिल सकता है ...

प्रश्न में IFrame अपने HTML में 454 लाइनों नहीं है, और न ही संदर्भित किया जाता जे एस फ़ाइलें से कोई भी कार्य इसके द्वारा।

मैं अटैच की कोशिश की वी.एस. एक डिबगर के रूप में iexplore.exe, और यह टूट जाता है जब त्रुटि होती है, लेकिन फिर मुझसे कहता है "वहाँ कोई स्रोत वर्तमान स्थान के लिए उपलब्ध कोड है" ...

किसी पर सुझाव मैं इसका पीछा करने के बारे में कैसे जा सकता हूं?


अद्यतन: मैं जानवर-बल के माध्यम से इस समस्या को मिल गया है, मूल रूप से, सब कुछ बाहर टिप्पणी और बेतरतीब ढंग से uncommenting ...
लेकिन सवाल अब भी खड़ा है:, जब, जहां त्रुटि है खोजने के लिए तर्कसंगत रास्ता है क्या आईई गलत लाइन नंबर/फ़ाइल की रिपोर्ट करता है?

+0

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

+0

फ़ायरफ़ॉक्स की फ़ायरबग प्लगइन डीबगिंग को बहुत आसान बनाता है। मैं सुझाव देता हूं कि पेज पर कोशिश कर रहा हूं। –

+0

इयान, बेन, आपके सुझावों के लिए धन्यवाद। मैं वास्तव में हर समय फायरबग का उपयोग करता हूं, लेकिन यह समस्या केवल आईई में होती है। –

उत्तर

5

लाइव उदाहरण के बिना इसे डीबग करना लगभग असंभव है, लेकिन एक चीज जो अक्सर इंटरनेट एक्सप्लोरर में "अवैध तर्क" त्रुटि का कारण बनती है, शैली शैली के लिए गलत मान सेट करने का प्रयास कर रही है।

तो कुछ की तरह:

document.getElementById("foo").style.borderWidth = bar + "px"; 

जब "बार" मान शून्य, या अपरिभाषित है, या स्ट्रिंग "दादी" है, यह, के रूप में "grandmapx" का कारण होगा के लिए मान्य मान नहीं है सीमाविड्थ शैली की संपत्ति।

+0

धन्यवाद। मैं वास्तव में उन सभी स्थानों पर देखा जहां मैं शैली में हेरफेर कर रहा हूं और उनसे टिप्पणी की। मैं वास्तव में पॉइंटर्स की तलाश में हूं कि मैं क्या कर सकता हूं जब आईई एक पंक्ति संख्या में त्रुटि की रिपोर्ट करता है जो अस्तित्व में नहीं है। कोई विचार? –

+0

आईई के तरीके अजीब हैं, और हमें केवल प्राणियों द्वारा समझा नहीं जा सकता है ;-) मैं इसे फ़ायरफ़ॉक्स, सफारी, क्रोम या ओपेरा में कोशिश करने की सलाह दूंगा और देख रहा हूं कि क्या वे आपको वास्तव में त्रुटि का एक बेहतर संकेत दे सकते हैं घटित हो रहा है। दुर्भाग्यवश, अर्थहीन रेखा संख्या उत्पन्न करने के लिए आईई कुख्यात है। – NickFitz

11

आईई का जावास्क्रिप्ट इंजन डिबगिंग की बात करते समय घृणित है। आप उन्नत विकल्पों में स्क्रिप्ट डिबगिंग सक्षम करने का प्रयास कर सकते हैं, और उसके बाद यदि आपके पास विजुअल स्टूडियो स्थापित है तो यह त्रुटि के स्थान पर कूद जाएगा ... यदि आप भाग्यशाली हैं। अन्य बार आपको कुछ भी नहीं मिलता है, खासकर यदि कोड eval था() 'ed।

इन पंक्ति संख्याओं के बारे में एक और बात यह है कि यह प्रतिबिंबित नहीं करता है कि त्रुटि किस फाइल में हो रही है। मेरे पास ऐसे मामले हैं जहां लाइन नंबर वास्तव में सही था, लेकिन यह एक जुड़ा हुआ .js फ़ाइल में था, न कि मुख्य फाइल

1

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

function TestMethod() 
{ 
    try 
    { 
     //whatever 
    } 
    catch (ex) 
    { 
     ShowError(ex.description); 
     //alert("TestMethod"); 
    } 
} 
6

माइक्रोसॉफ्ट स्क्रिप्ट डीबगर या DebugBar (http://www.debugbar.com) है कि आपकी कुछ बेहतर IE6 डीबगिंग टूल दे सकते हैं का उपयोग करें। वे हमेशा आईई 6 के साथ मेरी मदद करते हैं।

साथ ही, क्या यह आईई के किसी भी नए संस्करण या आईई 6 में होता है?

+0

डीबगबार एक महान खोज था (और व्यक्तिगत उपयोग के लिए नि: शुल्क)। धन्यवाद! – acatalept

0

एक और संभावना:

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

परिणाम यह है कि, उदाहरण के लिए, एक HTML पृष्ठ अपने शीर्षलेख में .js फ़ाइल तक पहुंचना चाहता है, लेकिन इसमें स्थानीय फ़ाइलों तक पहुंचने की अनुमति नहीं है। इस मामले में, इससे कोई फर्क नहीं पड़ता कि आप .js फ़ाइल में क्या लिखते हैं, ब्राउज़र कभी भी इसे नहीं पढ़ेगा, और एक परेशानी Line: 0 त्रुटि परिणामस्वरूप होगी।

तो इससे पहले कि आप एक त्रुटि के लिए अपने कोड में कंघी, अपने HTML पृष्ठ के गुणों की जांच करें और देखें कि क्या वह ओएस द्वारा नहीं अवरुद्ध कर दिया गया ....

2

IE9 एक ब्राउज़र मोड है।

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

0

निकफिट्स की तरह इंगित किया गया, स्टाइल मेरे कोड के साथ एक मुद्दा था।

document.getElementById('sums<%= event.id %>').style.border='1px solid #3b3b3b;' 

मैंने सीमा शैली को हटा दिया और मेरे आईई मुद्दे चले गए।

1

अन्य पाठकों के लिए एक नोट: मैंने हाल ही में यह "अवैध तर्क" दिया था। आईई 7-9 में त्रुटि दर्ज की गई और अंत में पाया गया कि यह सेटटाइमआउट/सेट इंटरवल का उपयोग करने के तरीके से नीचे था।

यह गलत है, IE में:

var Thing = {}; 
Thing.myFunc = function() { ... }; 
setTimeout(Thing.myFunc, 1000); 

इसके बजाय, इसलिए की तरह एक गुमनाम समारोह में कॉलबैक लपेट:

var Thing = {}; 
Thing.myFunc = function() { ... }; 
setTimeout(function() { Thing.myFunc(); }, 1000); 

और कोई और अधिक "अवैध तर्क" त्रुटियों।

+2

ऐसा नहीं है कि आपका पहला कॉल गलत है, लेकिन 'Thing.myFunc' सिर्फ एक फ़ंक्शन है। इसमें 'थिंग' का संदर्भ नहीं है, इसलिए यदि 'Thing.myFunc 'के भीतर कोड' इस' का उपयोग करने का प्रयास करता है तो यह ओ.के. जब सीधे 'Thing.myFunc() 'कहा जाता है (जो आपके उत्तर में कोड के दूसरे भाग पर होता है। – epeleg

संबंधित मुद्दे