Какао WebView: Невозможно вызвать конкретный метод Javascript, используя `callWebScriptMethod:` - PullRequest
4 голосов
/ 25 февраля 2010

Я загружаю страницу в WebView. На странице есть этот маленький тестовый Javascript:

<script type="text/javascript">
function test(parametr)
{

  $('#testspan').html(parametr);

}

var bdu = (function(){
 return {
  secondtest: function(parametr) {

  $('#testspan').html(parametr);

  }
 }
})();
</script>

Проблема в том, что я не могу вызвать "вторую" функцию из какао

это прекрасно работает:

[[webview1 windowScriptObject] callWebScriptMethod:@"test" withArguments:arguments];

и это не работает:

[[webview1 windowScriptObject] callWebScriptMethod:@"bdu.secondtest" withArguments:arguments];

Что может вызвать эту проблему и как ее исправить?

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 июля 2013

Я некоторое время боролся с этим в Cordova MacOSX, и вот решение, которое я нашел и работает для меня:

JavaScript:

CordovaBridgeUtil.isObject = function(obj) { return obj.constructor == Object; };

ObjectiveC:

WebScriptObject* bridgeUtil = [win evaluateWebScript:@"CordovaBridgeUtil"];
NSNumber* result = [bridgeUtil callWebScriptMethod:@"isObject" withArguments:[NSArray arrayWithObject:item]];
1 голос
/ 01 сентября 2012

"callWebScriptMethod" предназначен для вызова данного метода для данного объекта webscript (т.е. javascript) Во второй строке вы хотите вызвать метод secondTest для объекта javascript с именем «bdu». Способ сделать это:

  1. Получить объект bdu из вашего оконного объекта:

    WebScriptObject* bdu =[[webview1 windowScriptObject] valueForKey:@"bdu"];

  2. Вызовите метод secondTest для объекта bdu:

    [bdu callWebScriptMethod:@"secondtest" withArguments:arguments];

0 голосов
/ 26 февраля 2010

callWebscriptMethod: (NSString *) имя с аргументами: (NSArray *) args:

не оценивает name как выражение Javascript. Таким образом, он не может проанализировать bdu.secondtest: сначала он не ищет bdu, а затем получает в нем запись secondtest.

Вместо этого просто используйте evaluateWebScript:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...