Windows Phone

Windows Phone e o WebBrowser: Manipulando o DOM da página

É a primeira vez que estou postando algo sobre o Windows Phone.

Se você já programou para Desktop (Windows Forms) deve saber que o controle WebBrowser do desktop possui uma propriedade chamada Document (do tipo HtmlDocument). Essa propriedade em questão nos permite manipular o DOM da página.

Contudo, essa mesma propriedade não existe no controle WebBrowser do Windows Phone. No entanto, ainda existe uma maneira de manipular o DOM da página, que é se utilizando de JavaScript.

Para fazer isso, primeiramente você deve definir a propriedade IsScriptEnabled para True. Depois, basta seguir a linha de raciocínio do exemplo abaixo:

string script = "function() { return document.getElementById('Exemplo').innerText; }";

object returnValue = WebBrowser1.InvokeScript("eval", script);

// nesse caso returnValue será o InnerText do elemento Exemplo.

O exemplo acima utiliza a função WebBrowser.InvokeScript para invocar a função global eval() do JavaScript que, por último, executa o script passado como parâmetro.

No caso do exemplo acima, será retornado para a variável returnValue a propriedade InnerText do elemento Exemplo.

Bônus

Para carregar um HTML em um controle WebBrowser utilize o método WebBrowser.NavigateToString Method.

Para salvar a página carregada utilize o método WebBrowser.SaveToString.

Documentação no MSDN: WebBrowser Class (Microsoft.Phone.Controls)

PS.: Não tive a oportunidade de testar o código acima pois estou sem o SDK do Windows Phone instalado. Contudo, de acordo com a documentação e a teoria esta é a maneira de se fazer.

Então, se você obtiver alguma exceção na chamada do método InvokeScript tente fazer alguma alteração no seu script. Lembre-se que a mesma coisa pode ser feita de várias maneiras.

Outra coisa que devo salientar é que o mesmo script pode não funcionar em todas as versões do Windows Phone, então você deve testar manualmente!