2009-06-24 3 views
3

J'ai créé une application de bureau C# qui dépend de l'idée du robot d'indexation Web.Comment puis-je appeler une fonction JavaScript dans une page affichée par un contrôle WebBrowser à partir de l'application hébergeant le contrôle WebBrowser?

J'ai fait ma demande en utilisant le contrôle du navigateur Web pour ouvrir un site Web et connectez-vous progmatically et rediriger vers la page spécifique qui ont une gridview avec les données de tous les utilisateurs que je veux recueillir ...

Mais la question ici le nom d'utilisateur dans la vue gridview, cliquez sur la fonction JavaScript. Je connais son nom mais pas comment l'appeler dans une application de bureau. Quels sont les espaces de noms ou les DLL qui me permettraient de le faire?

Répondre

8

Je pense que cela devrait vous aider:

http://www.west-wind.com/WebLog/posts/493536.aspx

EDIT: Sur la base de ce lien, voici une application petit échantillon. Ajouter un bouton et un contrôle WebBrowser à un formulaire Windows et ajoutez ce code:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      this.webBrowser1.DocumentText = @"<html> 
<body> 
<script type = ""text/javascript""> 
function ShowMessage(text) { 
    alert(text); 
} 
</script> 
</body> 
<input type=""button"" onclick=""ShowMessage('From JavaScript')"" value=""Click me""/> 
</html>"; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      this.webBrowser1.Document.InvokeScript("ShowMessage",new object[]{"From C#"}); 
     } 
    } 

Si vous cliquez sur le bouton dans le navigateur, il va montrer le message javascript, si vous cliquez sur le bouton sous forme de fenêtres, ça va montrer le message C#.

0

Avez-vous pensé à utiliser les commandes suivantes pour exécuter le script sur la page à l'aide du contrôle WebBrowser?

' In VB - but easy to convert to C# as its pretty much the same thing :). 
Dim sScript As String, sLanguage As String 
sLanguage = "JScript" 
sScript = "MyJavaScriptToRun();" ' you can run many lines by delimiting them with ; 

WebBrowser1.Document.parentWindow.execScript sScript, sLanguage 

Laissez-moi savoir comment vous vous entendez. Dans les versions .NET du contrôle WebBrowser, il existe des méthodes supplémentaires pour exécuter le script, je pense qu'il existe une méthode de type .RunScript (ne peut pas rappeler le nom exact mais vous le remarquerez une fois que vous le voyez dans intellisense). Informez-moi si vous avez d'autres questions.

+0

Pouvez-vous simplement utiliser C# alors? Connaissez-vous même C#? – quantum

+0

@xiaomao Ne pouvez-vous pas lire le code ci-dessus? La seule différence est le Dim, qui est la déclaration de sScript et sLanguage, le reste est le même que C# tant que vous placez un; à la fin de chaque ligne. Avez-vous besoin d'aide pour interpréter ce qui précède? –

Questions connexes