के साथ जांच करते समय window.external पर नो-तर्क विधि लागू की जाती है, मैं System.Windows.Forms.WebBrowser
नियंत्रण के अंदर एम्बेडेड जावास्क्रिप्ट कोड वाला एक HTML पृष्ठ प्रदर्शित करने का प्रयास कर रहा हूं। जावास्क्रिप्ट कोड window.external
ऑब्जेक्ट के माध्यम से एम्बेडिंग वातावरण के साथ बातचीत करने की उम्मीद है। window.external
पर एक विधि का आह्वान करने से पहले, जावास्क्रिप्ट को विधि के अस्तित्व की जांच करनी होगी। यदि यह वहां नहीं है, तो कोड को सामान्य फ़ॉलबैक विधि का आह्वान करना चाहिए।टाइपफ
// basic idea
if (typeof(window.external.MyMethod) != 'undefined') {
window.external.MyMethod(args);
} else {
window.external.Generic("MyMethod", args);
}
हालांकि, typeof
साथ नो-तर्क विधि के लिए जाँच पहले से ही विधि आह्वान करने के लिए लगता है। यही है, अगर MyMethod
तर्कों की किसी भी सकारात्मक संख्या को स्वीकार करता है, तो ऊपर दिया गया कोड पूरी तरह से काम करेगा; लेकिन, यदि MyMethod
एक गैर-तर्क विधि है, तो अभिव्यक्ति typeof(window.external.MyMethod)
इसके प्रकार की जांच नहीं करेगा बल्कि इसे भी आमंत्रित करेगी।
क्या इस व्यवहार के लिए कोई काम है? विधि कॉल होने से रोकने के लिए क्या मैं किसी भी तरह अभिव्यक्ति window.external.MyMethod
से बच सकता हूं?
क्या आपने फ़ंक्शन के बजाए ऑपरेटर के रूप में टाइपफ़ोफ़ का उपयोग करने का प्रयास किया है? 'टाइपोफ विंडो.एक्सनेट। MyMethod! == "अपरिभाषित" ' –
इस प्रश्न का उत्तर देने वाले किसी भी व्यक्ति को ** ** पर' window.external' के साथ अपने समाधान का प्रयास करने की आवश्यकता है ** - जावास्क्रिप्ट पर किसी ऑब्जेक्ट के अस्तित्व के परीक्षण के नियमित तरीके 'window.external' के लिए काम नहीं करते हैं। – funkybro