В элементе управления WebBrowser window.external недоступен - PullRequest
4 голосов
/ 27 ноября 2011

Я хотел бы вызывать методы C # в элементе управления WebBrowser. Ниже мой код:

В XAML,

<phone:WebBrowser Margin="0,0,0,0" Name="WebBrowserForDetails" VerticalAlignment="Top" Height="300" ScriptNotify="WebBrowserForDetails_ScriptNotify" IsScriptEnabled="True" />

В C #,

protected override void OnNavigatedTo(NavigationEventArgs e)
{

    string html = string.Format("<html><head><title></title><script type=\"text/javascript\">{0}</script></head><body><button onclick=\"call();\">Push</button>", "function call(){ window.external.notify(123) ;}");
    WebBrowserForDetails.NavigateToString(html);
}

private void WebBrowserForDetails_ScriptNotify(Object sender, NotifyEventArgs e)
{
    Debug.WriteLine(e.Value);
}

Ожидается увидеть 123 в окне отладки.

Когда <button>Push</button> нажата, window.external.notify никогда не вызывается. На самом деле window.external недоступен. Я хотел бы вызвать функцию window.external.notify из элемента управления WebBrowser для вызова метода WebBrowserForDetails_ScriptNotify. Что мне делать?

Редактировать

Справочные ссылки: MSDN: window.external.notify, Любой способ динамической установки высоты элемента управления веб-браузера WP7 и блокировки прокрутки? и Отображение содержимого HTML в Windows Phone 7

Ответы [ 3 ]

1 голос
/ 28 ноября 2011

Я подозреваю, что ваша проблема связана с тем, что вы не предоставили действительный документ HTML5, поскольку ваши элементы (body & html) не закрыты.

0 голосов
/ 01 декабря 2011

Ваш код кажется правильным, но метод window.external.notify () принимает параметр String, а не Integer.Попробуйте вместо этого вызвать window.external.notify ('123').Надеюсь, это поможет.

0 голосов
/ 01 декабря 2011

Прежде всего, вы, вероятно, хотите прочитать то, что Майк Таулти комментирует офлайн-контенте браузера.

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/06/22/silverlight-html-and-the-webbrowser-control-for-offline-apps.aspx

...