Передача переменной JavaScript в Objective-C - PullRequest
5 голосов
/ 16 ноября 2010

Я видел, как передать переменную Objective-C в JavaScript прямо здесь, передать переменную target c в javascript в ios , но как передать переменную из JavaScript в Objective-C, когда я Я использую что-то вроде этого:

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

Ответы [ 2 ]

12 голосов
/ 16 ноября 2010

Ну, это то, что мы называем строковым типом .

Поскольку тип возвращаемого значения stringByEvaluatingJavaScriptFromString: равен NSString *, вам нужно будет либо использовать строку, либо принудительно ввести значение в другой ( read: more usable ) тип.

Но в любом случае, stringByEvaluatingJavaScriptFromString: вернет вам значение переменной JavaScript без проблем.

Способ достижения этой цели - использование анонимной функции (которая в данном случае выполняется самостоятельно):

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.
3 голосов
/ 16 ноября 2010

Вы должны иметь инструкцию возврата в вашем javascript. Возможно, есть лучшие способы сделать это, но у меня работает следующий javascript:

    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();"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...