Ich muss eine Methode basierend auf der Sichtbarkeit des folgenden HTML-Elements ausführen.Überprüfen Sie diesen rekursiven Code in einem C# webbrowser Steuerelement
<div id="loading" style="height: 201px; width: 793px; visibility: hidden;">
Die Methode, die ich verwendete, um die Sichtbarkeitseigenschaft zu überprüfen, funktioniert einwandfrei.
public bool isloading()
{
string v;
v= webBrowser1.Document.GetElementById("loading").Style;
if (v.Contains("visible")) { return true; }
if (v.Contains("hidden")) { return false; }
else
return false;
}
Ich benutze es so. Die App reagiert nicht mehr auf diesen Code. brauche Hilfe. Ich kann das Ereignis webbrowser1.documentcompleted
nicht verwenden, da dies ein AJAX-Anruf ist. Meine einzige Option ist, das Attribut "Sichtbarkeit" zu überprüfen.
public void battleloop()
{
if (!isloading())
{
universalclcikbutton();
}
else
{
battleloop();
}
}
Ich möchte, dass die Schleife weiterhin isloading() prüft und universalclickbutton() ausführt; Immer wenn isloading() falsch ist. Ich weiß, dass es eine Methode innerhalb einer Methode aufruft. Würde mir bitte jemand Alternativen geben?
Die App friert ein, wenn es um den obigen Code geht, da es rekursiv ist, möglicherweise?
Nein, die App friert ein, weil Sie in einer engen Schleife sind und es nie eine Chance geben, etwas anderes auszuführen. Aber es wird nicht für immer laufen, weil Sie schließlich eine 'StackOverflowException' bekommen. Du musst überdenken, dass du näher kommst. Prüfen Sie, ob es ein Ereignis gibt, das Sie abonnieren können, das ausgeführt wird, wenn das Laden abgeschlossen ist, und rufen Sie dann zu diesem Zeitpunkt Ihre Schaltflächenklickfunktion auf. –
Ich bin der Meinung, dass es keine andere Veranstaltung gibt, die ich abonnieren kann (im Internet stundenlang). und ja, ich bin auf meinem Ansatz festgefahren. Gibt es eine Möglichkeit, dass wir das Attribut eines HTML-Elements die ganze Zeit überprüfen können und dann eine Methode ausführen, die auf der Änderung des Attributs basiert. Ich bin neu in der Programmierung, also bitte bitte mit mir :). – Dinesh
Profi-Tipp: Wenn Sie Fragen stellen, verwenden Sie keine Großbuchstaben, verwenden Sie nicht alle fett, und fordern Sie nicht "so schnell wie möglich" Hilfe - es ist eine gute Möglichkeit, downvoted zu bekommen. – halfer