2012-01-16 12 views
36

मैं समारोह का उपयोग कर एक html पृष्ठ में एक जावास्क्रिप्ट कॉल करने के लिए कोशिश कर रहा हूँ का उपयोग कर जावास्क्रिप्ट कॉलिंग -UIWebView

<script> 
    function methodName() 
     { 
     // code to draw graph 
     } 

हालांकि -

View did load function 
{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"BasicGraph.html"]; 
    NSURL *urlStr = [NSURL fileURLWithPath:writablePath]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"BasicGraph" ofType:@"html"]; 
    [fileManager copyItemAtPath:myPathInfo toPath:writablePath error:NULL]; 

    [graphView loadRequest:[NSURLRequest requestWithURL:urlStr]]; 
} 

- (void) webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [graphView stringByEvaluatingJavaScriptFromString:@"methodName()"]; 
} 

यहाँ एचटीएमएल पृष्ठ पर जावास्क्रिप्ट है , फ़ंक्शन methodName() कॉल नहीं किया जा रहा है लेकिन window.onload = function() के बाद सब कुछ ठीक काम कर रहा है ..

मैं अपने आवेदन में RGraphs को एकीकृत करने की कोशिश कर रहा हूं और Basic.html वह HTML पृष्ठ है जिसमें जावास्क्रिप्ट लिखे गए हैं।

यह अच्छा होगा अगर कोई इस से मेरी मदद कर सके।

+0

अरे, अगर आपको कोई फर्क नहीं पड़ता है तो कृपया अपना नमूना कोड साझा कर सकते हैं जहां मैं देशी आईओएस कोड से rgrpahs को कॉल कर सकता हूं? यह बहुत उपयोगी होगा। पिछले एक हफ्ते से मैं इसे काम करने के लिए संघर्ष कर रहा हूं। – iamMobile

+1

मैंने अभी UIWebview में जावास्क्रिप्ट चलाने के विषय पर एक सुरुचिपूर्ण डेमो बनाया है, कृपया देखें: http: //creiapp.blogspot.hk/2013/04/uiwebview-javascript.html –

उत्तर

66

सरल: पृष्ठ को लोड होने से पहले आप जेएस फ़ंक्शन को उद्देश्य-सी से निष्पादित करने का प्रयास करते हैं।

लागू UIWebView's delegate methodwebViewDidFinishLoad: अपने UIViewController में और वहाँ में क्या आप वाकई समारोह के बाद पेज लोड किया गया है कहा जाता हो जाता है बनाने के लिए [graphView stringByEvaluatingJavaScriptFromString:@"methodName()"]; कहते हैं।

+0

मैंने ऐसा करने की कोशिश की लेकिन फिर भी यह नहीं है काम कर रहा है .. मैंने प्रश्न में कोड बदल दिया है लेकिन कुछ भी काम नहीं कर रहा है .. – learner2010

+7

यह एक बहुत ही वैध सवाल है और बिल्कुल बेवकूफ नहीं .. धन्यवाद। मैं प्रतिनिधि को सेट करना भूल गया .. और कोड अब काम करता है ... – learner2010

9

थोड़ा और स्पष्ट करने के लिए।

ज - UIWebViewDelegate

@interface YourViewController : UIViewController <UIWebViewDelegate> 
@property (weak, nonatomic) IBOutlet UIWebView *webView; 
@end 

लागू मीटर

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *path = @"http://www.google.com"; 
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:path]]]; 
    _webView.delegate = self; //Set the webviews delegate to this 
} 

- (void) webViewDidFinishLoad:(UIWebView *)webView 
{ 
    //Execute javascript method or pure javascript if needed 
    [_webView stringByEvaluatingJavaScriptFromString:@"methodName();"]; 
} 

तुम भी कोड में यह कर के बजाय स्टोरीबोर्ड से किसी प्रकार कर सकते हैं।