2012-04-23 4 views
6

Sto tentando di inviare automaticamente il modulo utilizzando il controllo webbrowser. Sto usando il seguente codice di presentare"Controllo del navigatore C# (esecuzione di tutti i javascript associati al modulo)

currentElement.InvokeMember("submit"); 

Ora questo metodo funziona bene. Ma a volte una forma possa avere qualche funzione javascript che viene chiamata sul tasto di scatto al momento della presentazione. Quindi diciamo che se un modulo ha un'immagine pulsante chiamata "Invia" e quando un utente la preme, una funzione javascript viene chiamata somefunction() e quindi viene inviato il modulo

Il problema è quando utilizzo il metodo sopra InvokeMember quindi invia solo il modulo e non esegue t eseguire script associati (in questo caso somefunction()) e devo scrivere manualmente il codice

webBrowser1.Document.InvokeScript("somefunction"); 

Ma questo richiede che io sappia in anticipo se c'è qualche funzione. C'è un modo per inviare il modulo e verrà eseguito automaticamente tutto il javascript associato?

E non conosco il nome o l'ID del pulsante su cui fa clic l'utente per inviare il modulo. Perché in alcuni casi potrebbe non avere nemmeno ID o nome per es.

<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

Oof. Questo esempio di che hai dato renderà questo problema davvero difficile da risolvere nel caso generale. Nell'esempio '', presumo che scrivere articoli nel modulo e premere Immettere non funziona. Se il browser non è in grado di individuare il pulsante di invio, non dare al tuo wrapper buone probabilità ... – sblom

+0

Puoi simulare un clic su qualsiasi cosa, ma non è possibile determinare questa azione alla fine finiscono per fare un invio. Quindi, la risposta alla domanda "C'è un modo in cui invio il modulo e verrà eseguito automaticamente tutto il javascript associato?" è sì, purché tu sappia dove cliccare. –

risposta

2

E 'stato un po' che ho pasticciato con il controllo WebBrowser, ma ho usato per fare saltare attraverso i cerchi per me. Mi sono imbattuto in questo problema in passato.

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

Quando si ottiene un oggetto Form, prendere la corda fuori dal OnSubmit ed eseguire questo per eseguirlo prima di inviare il modulo:

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

funziona come un fascino.

2

Se si conosce il nome o l'ID del tag di immagine è possibile utilizzare

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

o

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

per chiamare la funzione di socio in javascript