IE9

2011-09-27 11 views
123

में जावास्क्रिप्ट से VBScript तक कुछ भी पास नहीं है मेरे पास वीबीस्क्रिप्ट में एक ढांचा लिखा गया है। फंक्शन के इस ढांचे पैरामीटर में कुछ फ़ंक्शन के अंदर यदि कथन में कुछ भी नहीं है और फिर कुछ क्रियाएं निष्पादित की गई हैं। कोड जो जावास्क्रिप्ट में लिखे गए ढांचे का उपयोग करता है। इसलिए मुझे कुछ क्रियाएं करने के लिए काम करने के लिए कुछ भी नहीं करना है। IE8 और पिछले संस्करणों में अगले दृष्टिकोण काम किया: कुछ नहीं, अशक्त, कुछ भी नहीं है:IE9

<script type="text/vbscript"> 
    Function Test(val) 
     If (IsNull(val)) Then 
      Test = "Null" 
     ElseIf (IsObject(val)) Then 
      If (val Is Nothing) Then 
       Test = "Nothing" 
      End If 
     End If 
    End Function 

    Dim jsNothing 
    Set jsNothing = Nothing 
    msgBox(Test(jsNothing)) 
    msgBox(Test(Null)) 
</script> 


<script type="text/javascript"> 
    alert(Test(jsNothing)); 
</script> 

आईई < 9 उत्पादन होगा।

आईई 9 में: कुछ भी नहीं, शून्य, शून्य।

मैं जावास्क्रिप्ट से IE9 में VBScript से कुछ भी कैसे पास नहीं कर सकता?

क्षमा करें, मुझे पता है कि यह बदसूरत है, लेकिन मैं फंस गया हूं। और वीबीस्क्रिप्ट से नफरत है।

संपादित करें: फ्रेमवर्क फ़ंक्शन का एक उदाहरण है। मैं इसे बदल नहीं सकता क्योंकि यह व्यापक रूप से आवेदन में उपयोग किया जाता है।

Function ExampleFunction(val) 
    If (val Is Nothing) Then 
     ExampleFunction = 1 
    Else 
     ExampleFunction = 0 
    End If 
End Function 

अद्यतन

परित्यक्त काम। एक बेहतर मिला।

+10

छोटे sidenote: वीबीस्क्रिप्ट [शॉर्ट-सर्किट लॉजिकल ऑपरेटरों नहीं है] (http://msdn.microsoft.com/en-us/library/e8zy95hw%28v=VS.85%29.aspx), इसलिए स्टेटमेंट 'IsObject (वैल) और वैल कुछ भी नहीं है' अभी भी एक त्रुटि होगी। आपको इसे नेस्टेड में विभाजित करना होगा यदि। –

+0

@ चेरन एस: धन्यवाद, मैंने तय किया। – mixel

+0

मैंने इसे आपके लिए बहुत ही स्थानीयकृत के रूप में बंद कर दिया। भविष्य में, आप हमें बताने के लिए ध्वजांकित कर सकते हैं :) –

उत्तर

0

शून्य या यहां तक ​​कि ऋणात्मक संख्या जैसे मान का उपयोग करें जो आपके लिए केवल झूठी मूल्यांकन का उपयोग करने की अनुमति देगा, तो आपको NULL ऑब्जेक्ट का मूल्यांकन करने में विभिन्न ब्राउज़रों और उनके quirks के बारे में चिंता करने की आवश्यकता नहीं है।

+1

उत्तर के लिए धन्यवाद लेकिन समस्या ढांचे में है। यह बहुत पहले लिखा गया था और बड़े पैमाने पर बड़े पैमाने पर उपयोग किया जाता है और मैं इसे बदल नहीं सकता। मैंने जावास्क्रिप्ट से बुलाए गए ढांचे के एक समारोह के प्रश्न उदाहरण में जोड़ा। – mixel

17

दुर्भाग्यवश, आप शायद यहां फंस गए हैं - जावास्क्रिप्ट में "कुछ भी नहीं" बराबर है। अधिक जानकारी के लिए This Article देखें।

[संपादित करें] हालांकि, निम्नलिखित कार्य कर सकते हैं। अपने वीबीस्क्रिप्ट में "GetNothing" नामक एक फ़ंक्शन बनाएं जो "कुछ भी नहीं" लौटाता है। अपने जावास्क्रिप्ट उपयोग में "var jsNothing = GetNothing()"। this article

+61

हाय! उत्तर के लिए धन्यवाद, लेकिन मुझे पहले से ही एक समाधान मिला - मैंने इस नौकरी को छोड़ दिया और बेहतर पाया;) – mixel

4

से यह प्रश्न आकर्षक है, मैंने सोचा कि मैं कोशिश करूँगा और इसका मज़ा सिर्फ इसके लिए उत्तर दूंगा।

(बधाई एक बेहतर काम के लिए हो रही पर mixel लिए!)

मैं IE के लिए पहुँच नहीं है अभी, इसलिए मैं इस परीक्षण नहीं कर सकते, लेकिन क्या हुआ अगर आप इस तरह एक समारोह लेखन की कोशिश की:

<script type="text/vbscript"> 
    Function CallWithNulls(fn, arg1, arg2, arg3) 
    If (isNull(arg1)) arg1 = Nothing 
    If (isNull(arg2)) arg2 = Nothing 
    If (isNull(arg3)) arg3 = Nothing 
    fn(arg1, arg2, arg3) 
    End Function 
    Function IsNothing(arg1, arg2, arg3) 
    return arg1 is Nothing 
    End Function 
</script> 
<script type="text/javascript"> 
    alert(CallWithNulls(IsNothing, null, 1, 2)); 
</script> 

बेशक मुझे नहीं पता कि वीबी स्क्रिप्ट इस तरह के कार्यों को कॉल करने की अनुमति देता है ... और आपको अधिक/कम तर्कों से निपटना होगा।

+0

यह एक अच्छा कामकाज है। लेकिन यह सवाल पहले से ही 3 साल मर चुका है। और मैं चाहता हूं कि वीबीस्क्रिप्ट भी मर जाए :-) प्रयास के लिए धन्यवाद और अपवित्र पकड़ो। – mixel

+0

मैं समस्या को ठीक करने की कोशिश नहीं कर रहा था (क्योंकि मैंने देखा कि आपको पहले से ही एक बेहतर समाधान मिल जाएगा), यह सिर्फ एक दिलचस्प सवाल था और मैंने सोचा कि मैं इसे एक स्टैब दूंगा। अपवित्र के लिए धन्यवाद! – cwohlman

+0

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

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