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


123

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

<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 आउटपुट में: कुछ भी नहीं, अशक्त, कुछ भी नहीं।

IE9 में: कुछ भी नहीं, अशक्त, अशक्त।

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

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

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

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

अपडेट करें

नौकरी छोड़ दी। एक बेहतर मिला।


10
लघु सिडनोट: VBScript में लघु- परिचालित तार्किक संचालक नहीं होते हैं , इसलिए कथन IsObject(val) And val Is Nothingमें अभी भी त्रुटि होगी। आपको इसे नेस्टेड इफ़ में विभाजित करना होगा।
चेरन शुनमुगवेल

मैंने इसे आपके लिए भी स्थानीयकृत के रूप में बंद कर दिया है। भविष्य में, आप हमें बताने के लिए सिर्फ झंडा कर सकते हैं :)
टिम पोस्ट

क्या VBScript और भी है? मुझे पता है कि VB.Net के पास है। जैसा कि लंगड़ा है, कम से कम यह शॉर्ट-सर्किटिंग के लिए अनुमति देगा।
vbullinger

@vbullinger: नहीं, इसमें आलसी तर्क नहीं है। blogs.msdn.com/b/ericlippert/archive/2004/07/15/184431.aspx-Eric Lippert का लेख।
मिश्रण

जवाबों:


17

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

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


4

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

(बेहतर नौकरी पाने के लिए मिक्सचर को बधाई!)

मेरे पास अभी 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>

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


यह एक अच्छा हल है। लेकिन यह सवाल पहले से ही 3 साल का है। और मेरी इच्छा है कि वीबीएसस्क्रिप्ट भी मर जाए :-) प्रयास के लिए धन्यवाद और उत्थान को पकड़ो।
मिश्रण 18

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

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

0

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


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

0

एक उदाहरण के रूप में, ऐसा कुछ काम करेगा लेकिन यदि ब्राउज़र IE11 है या बाद में आपको 'मेटा' टैग की आवश्यकता होगी।

<HTML>
<HEAD>
<meta http-equiv="x-ua-compatible" content="IE=10">
<TITLE>Pass Javscript to VBScript</TITLE>

<script>
    var val = "null";

    window.alert("Test: " +  val);
</script>

<script type="text/vbscript">

    PassNothing(val)


    Sub PassNothing(value)
        If LCase(value) = "null" Then
            MsgBox "Java passed 'null' so VBScript = 'Nothing'"
        Else
            Msgbox "Nothing received"
        End If
    End Sub

    </script>

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