2013-12-08 3 views
0

Я загрузки веб-страницы в элементе управления WebBrowser в Windows Phone 7.1, используя следующий код:Вызов произвольного JavaScript в элементе управления WebBrowser

public MainPage() 
    { 
     InitializeComponent(); 
     this.webBrowser1.IsScriptEnabled = true; 
     this.webBrowser1.Navigate(new Uri("http://xkcd.com/")); 
     this.webBrowser1.MouseMove += new MouseEventHandler(mouseMove); 
    } 

    void mouseMove(object sender, MouseEventArgs e) 
    { 
     var a = this.webBrowser1.InvokeScript(
      "eval", 
      new[] { "document.body.removeChild(document.getElementById('topContainer')); " }); 
    } 

Он бросает следующее исключение: An unknown error has occurred. Error: 80020101. Этот код document.body.removeChild(document.getElementById('topContainer')); работает в хромированной консоли , но вызывает здесь исключение. Зачем? Обратите внимание, что javascript DOES выполняется, просто выдает исключение.

+0

80020101 указывает на ошибку при оценке JavaScript. Попробуйте поместить некоторый текст в ваш 'alert()' для начала ... Кроме того, почему вы вызываете eval? –

+0

Я использую eval, потому что мне нужно будет оценить скрипт, а не только один вызов функции. Это единственный способ, которым я знаю, чтобы вызвать произвольный javascript на внешней веб-странице с помощью элемента управления WebBrowser. –

ответ

2

Мне удалось сделать ваш код работой, положив InvokeScript в событие Loaded WebBrowser вместо MouseMove.

Я думаю, что событие MouseMove было запущено слишком быстро, вызывая проблемы синхронизации с помощью элемента управления WebBrowser.

Вот код, который работает:

public MainPage() 
{ 
    InitializeComponent(); 

    this.webBrowser1.IsScriptEnabled = true; 
    this.webBrowser1.Navigate(new Uri("http://xkcd.com/")); 
    this.webBrowser1.LoadCompleted += webBrowser1_LoadCompleted; 
} 

void webBrowser1_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e) 
{ 
    var a = this.webBrowser1.InvokeScript(
     "eval", 
      new[] { "document.body.removeChild(document.getElementById('topContainer')); " }); 
} 
Смежные вопросы