2011-03-23 13 views

Respuesta

0

no he probado en MonoTouch, pero debe ser el mismo que en ObjC:

UIWebView.EvaluateJavascript 
27

Invocar código JavaScript que se ejecuta en el UIWebView de su aplicación, utilice el método EvaluateJavascript, así:

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

para llamar de nuevo en su código C#, la única opción es conectar a la propiedad ShouldStartLoad como esto:

myView.ShouldStartLoad = myHandler; 

[...] 

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

Puede, por supuesto, también utilizar métodos anónimos si quiere acceder a las variables locales fácilmente:

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

En el lado Javascript, si desea volver a llamar a Mono, se establece entonces la location.href propiedad a una URL "especial", como este:

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

la información estará disponible en el objeto de la solicitud: request.Url.AbsoluteString

+0

Gracias, Miguel !! Un millón de veces, ¡gracias! Esto también acaba de responder a mi pregunta ... mi pregunta está aquí: http://stackoverflow.com/questions/5404152/shouldstartload-of-custom-uiwebviewdelegate-not-being-called-when-uiwebview-reque. Estoy ocupado creando un mecanismo de enlace para la comunicación bidireccional entre javascript y monotouch y he estado luchando con la implementación del delegado ShouldStartLoad. Esto me dio la información que necesitaba para que funcione. :) :) :) – BruceHill

+0

gracias Miguel, eres el mejor !!!! – user672206

+0

Ok, genial. Estoy tratando de anular una llamada ajax. Puedo reemplazar el método PageMethods.Method() con una función que llame a una URL especial como usted dijo, pero necesito la llamada para dar una respuesta. ¿Cómo puedo hacer eso? –

Cuestiones relacionadas