Как я могу назвать функцию javascript с помощью MonoTouch и наоборот?

Я использую monotouch.

Моя проблема в том, что я хочу вызвать функцию javascript из функции monotouch, а функция javascript также может вызвать функцию монотота.

Я считаю, что с объективной c эта проблема возможна, но мне нужно сделать ее с помощью monotouch.

Помогите мне пожалуйста.

любая благодарность за продвижение

Ответы

Ответ 1

Чтобы вызвать код Javascript, запущенный в UIWebView из вашего приложения, используйте метод EvaluateJavascript, например:

myView.EvaluateJavaScript ("a = 1;");

Чтобы вернуться в свой код С#, единственным вариантом является подключение к свойству ShouldStartLoad следующим образом:

myView.ShouldStartLoad = myHandler;

[...]

bool myHandler (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType)
{
    // Determine what to do here based on the @request and @navType
} 

Вы можете, конечно, использовать анонимные методы, если вы хотите легко получить доступ к локальным переменным:

myView.ShouldStartLoad = (webView, request, navType) => {
     // Determine here what to do
}

В стороне Javascript, если вы хотите перезвонить в Mono, вы затем установите для свойства location.href "специальный" URL-адрес, например:

// Javascript code:
location.href = "myapp://action?par1=abc&par2=def"

Информация будет доступна на объекте запроса: request.Url.AbsoluteString

Ответ 2

Я только что выпустил MonoTouch JsBridge, чтобы сделать это проще. Он позволяет добавлять прослушиватели событий и события пожара между собственной стороной и UIWebView. Это было вдохновлено Титаном.

https://github.com/crdeutsch/MonoTouch-JsBridge

Ответ 3

Я не пробовал это в monotouch, но он должен быть таким же, как в ObjC:

UIWebView.EvaluateJavascript