2016-01-25 1 views
1

je dois obtenir l'élément 'p' et j'utilise le code suivantObtenez élément de webcontrol awesomium dans C#

document dynamique = webControl1.ExecuteJavascriptWithResult ("document"); var p = document.getElementsByTagName ("p");

mais il ne fonctionne pas J'utilise v1.7.5.1 Awesomium avec visual studio 2010

Répondre

1

Quelles sont les données spécifiques avez-vous besoin de ces paragraphes? Dans l'exemple actuel que j'ai posté ci-dessous obtient le innerHTML de chaque paragraphe. Le javascript pourrait être:

function GetContents() { 
    var arr = []; 
    var paragraphs = document.getElementsByTagName('p'); 
    for (var i = 0; i < paragraphs.length; i++) { 
     arr.push(paragraphs[i].innerHTML); 
    } 
    return arr; 
} 
GetContents(); 

et vous pouvez exécuter ce directement par:

JSObject paragraphs = webControl1.ExecuteJavascriptWithResult("function GetContents() {var arr = [];var paragraphs = document.getElementsByTagName('p');for (var i = 0; i < paragraphs.length; i++) {arr.push(paragraphs[i].innerHTML);}return arr;} GetContents();") 

Dans mon cas, il semble cependant que je continue à obtenir un contenu non défini pour les paragraphes variables. Le travail autour de moi met le GetContents() à l'intérieur d'une fonction alert().

Il devient ceci:

JSObject paragraphs = webControl1.ExecuteJavascriptWithResult("function GetContents() {var arr = [];var paragraphs = document.getElementsByTagName('p');for (var i = 0; i < paragraphs.length; i++) {arr.push(paragraphs[i].innerHTML);}return arr;} alert(GetContents());") 

et vous devrez attendre l'événement webControl1.ShowJavascriptDialog au feu.

Dans Visual Basic.NET, vous pouvez faire:

Private Sub JSDialog(ByVal sender As Object, ByVal e As JavascriptDialogEventArgs) Handles webControl1.ShowJavascriptDialog 
    e.Cancel = False 
    e.Handled = True 
    MessageBox.Show(e.Message) 
End Sub 

En C#, vous pouvez le faire en créant la fonction:

private void JSDialog(object sender, JavascriptDialogEventArgs e) { 
    e.Cancel = false; 
    e.Handled = true; 
    MessageBox.Show(e.Message); 
} 

et ajoutez ceci:

webControl1.ShowJavascriptDialog += OnShowJavascriptDialog; 
+0

merci :) Je dois obtenir le texte interne et le stocker dans la variable C# pour ne pas l'alerter. – mtesta010

+0

Ah agréable d'entendre. Bien que la partie d'alerte est juste une alternative si la première méthode ne fonctionne pas comme cela n'a pas fonctionné ici dans mon côté. L'e.Message de la fonction JSDialog contient les données que vous avez alertées dans JS. À votre santé! – Nathu

+0

merci mais j'ai besoin de manipuler l'élément individuel de l'étiquette 'p' et peut modifier ou supprimer l'un d'eux – mtesta010