2012-03-05 23 views
17

मैं MSIE में निम्नलिखित जावास्क्रिप्ट है:setTimeout इंटरनेट एक्सप्लोरर

setTimeout(myFunction, 1000, param); 

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

+0

बस एक गुमनाम समारोह का उपयोग करें ... –

उत्तर

32

param इंटरनेट एक्सप्लोरर में निर्दिष्ट करती है कि myFunction में कोड है JScript, जावास्क्रिप्ट या VBScript यह भी देखें: MSDN। यह अन्य ब्राउज़रों की तरह व्यवहार नहीं करता है।

निम्नलिखित काम करेगा:

setTimeout((function(param) { 
    return function() { 
     myFunction(param); 
    }; 
})(param) , 1000); 
:

setTimeout(function() { 
    myFunction(param); 
}, 1000); 

पिछली लाइन वास्तव में नकल setTimeoutparam चर, उपयोग करने के लिए एक बाद में अद्यतन द्वारा एक चर, अप्रभावित पास करने के लिए नहीं है फ़ायरफ़ॉक्स आदि में

+0

धन्यवाद! "पैराम्स" में से कौन सा वास्तव में पारित किया गया है? – clamp

+0

@clamp नीचे 'param' मूल मूल 'param' चर है। शीर्ष पर 'param' स्वयं-invoking फ़ंक्शन के लिए एक स्थानीय चर है। बीच में 'परम' शीर्ष पर 'param' को हल करता है। –

+0

धन्यवाद! सबकुछ अब सभी ब्राउज़रों में काम करता प्रतीत होता है, बस कुछ पोस्ट प्रोसेसिंग टूल्स जैसे कि जिशिंट और Google क्लोजर कंपाइलर शिकायत करते हैं कि यह अमान्य वाक्यविन्यास है। लेकिन मुझे लगता है, यह एक और सवाल होना चाहिए। – clamp

3

इंटरनेट एक्सप्लोरर आपको ऐसे पैरामीटर पास करने की अनुमति नहीं देता है।

setTimeout(function(){ 
    myFunction(param); 
}, 1000); 

उद्धरण MDN से:

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

0

यह पैरामीटर नहीं है। जाहिर है, वह अंतिम तर्क स्क्रिप्टिंग भाषा को दर्शा रहा है।

उपयोग के बजाय एक गुमनाम समारोह:

setTimeout(function() { myFunction(param) }, 1000); 
0

एक गुमनाम फ़ंक्शन का उपयोग

setTimeout(function(){ 
    myFunction(param); 
}, 1000); 
0

कैसे इस बारे में:

setTimeout(function() { 
    myFunction(param); 
}, 1000); 
0

आप उपयोग कर सकते हैं बंद:

setTimeout(function(){myFunction(param)}, 1000); 
संबंधित मुद्दे