iOS UIWebView Javascript - insert data -receive callbacks?

后端 未结 3 1867

I have a webpage. I have a javascript file that does a whole lot of stuff. In the app I have an NSString with some crucial data that needs to be processed in the javascrip

相关标签:
3条回答
  • 2020-12-07 20:02

    Hi we can send the data from objective c to javascript and can callback from javascript easily

    Objective-C --> javaScript

    In Objective-C class

    NSData *locationCountData = [NSJSONSerialization dataWithJSONObject:locationCount   options:NSJSONWritingPrettyPrinted error:nil];
    NSString *locationCountString = [[NSString alloc] initWithData:locationCountData encoding:NSUTF8StringEncoding];
    
    NSData *locationCountData = [NSJSONSerialization dataWithJSONObject:locationCount options:NSJSONWritingPrettyPrinted error:nil];
    NSString *locationCountString = [[NSString alloc] initWithData:locationCountData encoding:NSUTF8StringEncoding];
    
    NSString *str = [NSString   stringWithFormat:@"testFunction(%@,%@)",locationCountString, locationsListString];
    [self.myWebView stringByEvaluatingJavaScriptFromString: str];
    

    in JavaScript file

    <script type="text/javascript">
    function testFunction(locationCount,locationList)
    {
        alert(locationCount + locationList);
    }
    </Script>
    
    0 讨论(0)
  • 2020-12-07 20:07

    You can call a javascript method and pass the value by using this

    NSString *selectedValue = [webViewInstance stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getAndReturnRadioValue(%d)", questionCounterIntValue]];
    

    But to trigger back from javascript you need to use a workaround method,

    Implement the following webViewDelegate method

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    
        NSLog(@"passed data from web view : %@",[[request URL] query]);
    
        if([[[request URL] query] isEqualToString:@"clickedOnLineNo"])
        {
            //Do your action here    
        }
    }
    

    You have to navigate to a fake URL from your javascript method like,

    window.location = "someLink://yourApp/form_Submitted:param1:param2:param3";
    

    on a button click or your required action.

    You could take a look at my answer for this question Submit a form in UIWebView

    0 讨论(0)
  • 2020-12-07 20:14
    - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
    

    sounds like exactly the method you need. If, for example, the input and output need to interact with the JavaScript can be done with a single method, you can pass a value into JavaScript and get the results with something like the following code:

    NSString* jsCode = [NSString stringWithFormat:@"doSomething('%@')", dataToPass];
    NSString* resultFromJavaScript = [webView stringByEvaluatingJavaScriptFromString:jsCode];
    
    0 讨论(0)
提交回复
热议问题