2011-03-23 12 views
14

मैं monotouch का उपयोग कर नया हूँ।मैं कैसे मोनो टच के साथ जावास्क्रिप्ट फ़ंक्शन को कॉल कर सकता हूं और इसके विपरीत?

मेरी समस्या यह है कि मैं एक मोनोटच फ़ंक्शन से जावास्क्रिप्ट फ़ंक्शन को कॉल करना चाहता हूं और जावास्क्रिप्ट फ़ंक्शन भी एक मोनोटच फ़ंक्शन को कॉल कर सकता है।

मुझे विश्वास है कि उद्देश्य सी के साथ यह समस्या संभव है, लेकिन मुझे इसे मोनोचच के साथ बनाने की आवश्यकता है।

कृपया मेरी सहायता करें।

किसी भी मदद के लिए अग्रिम

उत्तर

0

मैं monotouch में यह प्रयास नहीं किया है के लिए धन्यवाद है, लेकिन यह ObjC में के रूप में ही किया जाना चाहिए:

UIWebView.EvaluateJavascript 
27

से UIWebView में चल रहा जावास्क्रिप्ट कोड आह्वान करने के लिए अपने आवेदन, इस तरह, EvaluateJavascript विधि का उपयोग करें:

myView.EvaluateJavaScript ("a = 1;"); 

अपने सी # कोड में वापस बुलाने के लिए, एक ही विकल्प इस तरह ShouldStartLoad संपत्ति के लिए ऊपर हुक करने के लिए है: जावास्क्रिप्ट पक्ष में

myView.ShouldStartLoad = (webView, request, navType) => { 
    // Determine here what to do 
} 

, अगर आप वापस मोनो को कॉल करना चाहते हैं, तो आप सेट:

myView.ShouldStartLoad = myHandler; 

[...] 

bool myHandler (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType) 
{ 
    // Determine what to do here based on the @request and @navType 
} 

आप निश्चित रूप से, यह भी गुमनाम तरीकों का उपयोग कर सकते हैं आप आसानी से स्थानीय चर का उपयोग करना चाहते हैं एक "विशेष" यूआरएल को location.href संपत्ति, इस तरह:

// Javascript code: 
location.href = "myapp://action?par1=abc&par2=def" 

जानकारी अनुरोध वस्तु पर उपलब्ध हो जाएगा:

+०१२३५१६४१०६ request.Url.AbsoluteString
+0

धन्यवाद, मिगुएल !! एक लाख बार, धन्यवाद !! इसने अभी भी मेरे प्रश्न का उत्तर दिया ... मेरा प्रश्न यहां है: http://stackoverflow.com/questions/5404152/shouldstartload-of-custom-uiwebviewdelegate-not-being-called-when-uiwebview-reque। मैं जावास्क्रिप्ट और मोनोचouch के बीच दो-तरफा संचार के लिए ब्रिजिंग तंत्र बनाने में व्यस्त हूं और कन्स्टार्ट लोड प्रतिनिधि को लागू करने के साथ संघर्ष कर रहा हूं। इसने मुझे वह जानकारी दी जो मुझे काम करने के लिए जरूरी था। :) :) :) – BruceHill

+0

धन्यवाद मिगुएल, आप सबसे अच्छे हैं !!!! – user672206

+0

ठीक है, बढ़िया। मैं एक AJAX कॉल ओवरराइड करने की कोशिश कर रहा हूँ। मैं PageMethods.Method() को उस फ़ंक्शन के साथ प्रतिस्थापित कर सकता हूं जो आपके जैसा विशेष यूआरएल कहता है, लेकिन मुझे प्रतिक्रिया देने के लिए कॉल की आवश्यकता है। मैं उसे कैसे कर सकता हूँ? –

7

मैंने इसे आसान बनाने के लिए अभी मोनो टच जेएस ब्रिज जारी किया। यह आपको देशी पक्ष और UIWebView के बीच ईवेंट श्रोताओं और अग्नि घटनाओं को जोड़ने की अनुमति देता है। यह टाइटेनियम से प्रेरित था।

https://github.com/crdeutsch/MonoTouch-JsBridge

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