2010-11-16 9 views
5

पर जावास्क्रिप्ट वैरिएबल पास करना मैंने देखा है कि ऑब्जेक्टिव-सी वैरिएबल को जावास्क्रिप्ट पर कैसे पास किया जाए, passing objective c variable to javascript in ios, लेकिन जब मैं इस तरह कुछ उपयोग कर रहा हूं, तो मैं जावास्क्रिप्ट से ऑब्जेक्टिव-सी में एक चर को कैसे पास करूं :उद्देश्य-सी

[webView stringByEvaluatingJavaScriptFromString:@"var elems = document.body.getElementsByTagName(\"u\");" "passThisVarToObjC = elems.length;"

उत्तर

12

खैर, यह है कि हम क्या कॉल stringly टाइप किया था।

क्योंकि stringByEvaluatingJavaScriptFromString: की वापसी प्रकार NSString * है, आप या तो कुछ अन्य में एक स्ट्रिंग मान का उपयोग कर या मजबूर करने के लिए छड़ी करने की आवश्यकता होगी (पढ़ने: अधिक उपयोगी) टाइप करें।

लेकिन वैसे भी, stringByEvaluatingJavaScriptFromString: किसी समस्या के बिना आपको जावास्क्रिप्ट चर के मान को वापस कर देगा।

तरीका यह पूरा किया है एक गुमनाम समारोह (जो इस मामले में स्वयं को क्रियान्वित है) के उपयोग के माध्यम से होता है:

NSString *numOfElements = [webView stringByEvaluatingJavaScriptFromString:@"(function() {var elems = document.body.getElementsByTagName(\"u\"); return elems.length;})();"]; 

//do normal stuff with numOfElements like cast to an int or something cool like that. 
+0

आप कृपया भी http://stackoverflow.com/ इस पर मेरी मदद कर सके प्रश्न/10793698/कैसे करने वाली मेकअप छवि नक्शे-क्लिक करने योग्य-का उपयोग कर-UIWebView में iphone –

3

आप अपने जावास्क्रिप्ट में एक वापसी कथन की आवश्यकता है।

NSString* findLink = @"function f() {var x = document.getElementsByTagName('a'); 
if(x.length > 0) { return x[0].getAttribute('href');}; return null;} f(); "; 

इस कोड का उपयोग का प्रयास करें:: वहाँ यह करने के लिए बेहतर तरीके लेकिन निम्नलिखित जावास्क्रिप्ट मेरे लिए काम करता हो सकता है

[webView stringByEvaluatingJavaScriptFromString:@"function f() {var elems = 
document.body.getElementsByTagName(\"u\"); return elems.length;}f();"];