Para acceder a las variables de ámbito global JavaScript, he usado un método personalizado incluido aquí se llama GetGlobalVariable()
. (Se utiliza Document.InvokeScript
de Juan's answer 1.)
Digamos que sus variables JavaScript creadas en el ámbito global como esto:
var foo = "bar";
var person = {};
var person.name = "Bob";
A continuación, se puede acceder a estos valores utilizando el método C# GetGlobalVariable()
como tal. (Es posible que necesite configurar una timer a comprobar continuamente si las variables son pobladas.)
var foo = GetGlobalVariable(webBrowser, "foo");
var name = GetGlobalVariable(webBrowser, "person.name");
Aquí es el método GetGlobalVariable()
. Observe que verifica cada parte de la referencia de variable para evitar una excepción.
private object GetGlobalVariable(WebBrowser browser, string variable)
{
string[] variablePath = variable.Split('.');
int i = 0;
object result = null;
string variableName = "window";
while (i < variablePath.Length)
{
variableName = variableName + "." + variablePath[i];
result = browser.Document.InvokeScript("eval", new object[] { variableName });
if (result == null)
{
return result;
}
i++;
}
return result;
}
Entonces, ¿cómo podría acceder myVariable desde dentro de mi aplicación C# después de que mi control WebBrowser haya cargado la página web? – AllStar11
Si esa es la pregunta que está haciendo, es posible que desee volver y editar su pregunta original. No está muy claro. –