Подтвердить что ты не робот

IOS UIWebView Javascript - вставлять обратные вызовы данных?

У меня есть веб-страница. У меня есть javascript файл, который делает много всего. В приложении у меня есть NSString с некоторыми важными данными, которые необходимо обработать в файле javascript. Как мне получить значение строки в определенном месте в моем html, чтобы мой javascript мог его прочитать?

Кроме того, javascript будет создавать определенные данные при выполнении действий (например, нажатие кнопки), как я могу получить данные из webview/javascript, чтобы их можно было сохранить в приложении?

4b9b3361

Ответ 1

Вы можете вызвать метод javascript и передать значение с помощью этого

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

Но для возврата из javascript вам необходимо использовать метод обхода,

Внедрить следующий метод webViewDelegate

- (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    
    }
}

Вам нужно перейти к поддельному URL-адресу из вашего javascript-метода, например,

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

нажатием кнопки или требуемым действием.

Вы можете посмотреть мой ответ на этот вопрос Отправить форму в UIWebView

Ответ 2

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

звучит точно так, как вам нужно. Если, например, вход и выход необходимо взаимодействовать с JavaScript, это может быть сделано с помощью одного метода, вы можете передать значение в JavaScript и получить результаты с чем-то вроде следующего кода:

NSString* jsCode = [NSString stringWithFormat:@"doSomething('%@')", dataToPass];
NSString* resultFromJavaScript = [webView stringByEvaluatingJavaScriptFromString:jsCode];

Ответ 3

Привет, мы можем отправить данные с объектного c в javascript и легко выполнить обратный вызов из javascript.

objectve c → javaScript

В объекте 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];

в файле JavaScript

<script type="text/javascript">
function testFunction(locationCount,locationList)
{
    alert(locationCount + locationList);
}
</Script>