2009-01-31 17 views
8

मैं एक जावास्क्रिप्ट फ़ंक्शन का रिटर्न मान प्राप्त करने का प्रयास कर रहा हूं (उदाहरण के लिए: return "hello") आईफोन एसडीके के साथ।वापसी मूल्य जावास्क्रिप्ट UIWebView

ओएस एक्स पर वेब व्यू विधि -stringByEvaluatingJavaScriptFromString जेएस फ़ंक्शन रिटर्न मान युक्त एनएसएसटींग लौटाता है, लेकिन आईफोन पर कोई मान वापस नहीं किया जाता है।

मैं इसे कैसे हल कर सकता हूं?


मैं एक निजी UIWebViewDelegate विधि

- (void)webView:(id)fp8 runJavaScriptAlertPanelWithMessage:(id)fp12 initiatedByFrame:(id)fp16 

लागू जब चेतावनी() फ़ंक्शन js स्क्रिप्ट में प्रयोग किया जाता है पाया। इसलिए मैं alert(myReturValue) पर कॉल करके "वापसी" मान प्राप्त कर सकता हूं।

यह मेरी समस्या का समाधान नहीं करता है, क्योंकि मुझे सार्वजनिक एसडीके में कुछ चाहिए।

उत्तर

28

रिटर्न स्ट्रिंग अंतिम जावास्क्रिप्ट कथन का परिणाम है। return इसके सामने रखें!

न्यूनतम कोड है कि मेरे लिए काम किया:

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; 
[self.view addSubview:webView]; 
NSString *result = [webView stringByEvaluatingJavaScriptFromString: 
        @"function f(){ return \"hello\"; } f();"]; 
NSLog(@"result: '%@'", result); // 'hello' 
[webView release]; 

तो मैं (अन्यथा यह बाद में दुर्घटना होगा) के लिए एक दृश्य के लिए UIWebView* जोड़ने के लिए किया था, लेकिन वेबव्यू में कुछ भी लोड करने के लिए नहीं था।

ध्यान दें कि अंतिम विवरण केवल "f();" है, इसलिए लौटाई गई स्ट्रिंग में f() के मूल्यांकन का परिणाम होगा।

6

मुझे एक ही समस्या थी जब मैंने Google मानचित्र API से कुछ फ़ंक्शंस कॉल करने का प्रयास किया था।

वस्तुओं को लौटने में कोई समस्या थी, इसलिए मैंने इसे फ़ंक्शन टूस्ट्रिंग() द्वारा हल किया।

NSString *result = [webView stringByEvaluatingJavaScriptFromString: 
       @"map.getBounds().toString();"]; 
+0

आप यह भी http://stackoverflow.com/questions/10793698/how-to-make-image-maps-clickable-using-uiwebview-in-iphone जवाब कर सकते हैं –

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