2012-04-23 16 views
6

Estoy intentando enviar automáticamente el formulario usando el control del webbrowser. Estoy utilizando el código siguiente para enviar"C# webbrowser control (ejecución de todos los javascripts asociados con el formulario)

currentElement.InvokeMember("submit"); 

Ahora estos métodos funciona bien. Pero a veces una forma puede tener cierta función javascript que se llama el clic de botón en el momento de la presentación. Así que vamos a decir si un formulario tiene alguna imagen de botón llamada "Enviar" y cuando un usuario la presiona, se invoca una función javascript alguna función y luego se envía el formulario.

Problema es cuando uso el método anterior InvokeMember, entonces solo envía el formulario y no lo hace t ejecutar scripts asociados (en este caso somefunction()) y tengo que escribir manualmente el código

webBrowser1.Document.InvokeScript("somefunction"); 

Pero esto requiere que sepa de antemano si hay alguna función. ¿Hay alguna manera de enviar formulario y ejecutará automáticamente todos los javascript asociados?

Y no conozco el nombre ni la ID del botón que el usuario hace clic para enviar el formulario. Porque, en algunos casos, es posible que ni siquiera tenga ID o nombre para, p. Ej.

<span class="btn" onclick="somefunction()"> 
<img style="cursor:pointer" title="Submit" alt="Submit" src="http://stackoverflow.com/imagesbutton.png?2012"> 
<div id="s" style=""></div> 
</span> 
+0

Uf. Ese ejemplo '' que diste va a hacer de esto un problema realmente difícil de resolver en el caso general. En su ejemplo '', asumo que escribir cosas en el formulario y presionar Enter tampoco funciona. Si el navegador no puede detectar el botón de enviar, no le doy buenas probabilidades a su contenedor ... – sblom

+0

Puede simular un clic en cualquier cosa pero no puede determinar que esta acción eventualmente termine haciendo un envío. Entonces, la respuesta a la pregunta "¿Hay algún modo en que envíe el formulario y automáticamente ejecutará todos los javascript asociados?" es sí, siempre que sepa dónde hacer clic. –

Respuesta

2

Ha sido un tiempo desde que he metido un poco con el control WebBrowser, pero he usado para hacerla pasar por el aro para mí. Me he encontrado con este problema en el pasado.

http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro

Cuando se obtiene un objeto Form, tomar la cuerda fuera de la OnSubmit y ejecutar este para ejecutarlo antes de enviar el formulario:

object[] codeString = {"myObject.setVariable(0);"}; 
webBrowser1.Document.InvokeScript("eval",codeString); 

funciona como un encanto.

2

Si conoce el nombre o identificador de la etiqueta de la imagen se puede utilizar

webBrowser1.Document.GetElementById("button").InvokeMember("click"); 

o

webBrowser1.Document.GetElementByName("button").InvokeMember("click"); 

llamar a la función asociada en javascript

Cuestiones relacionadas