在WebBrowser控件中,window.external不可用

时间:2011-11-27 09:27:21

标签: c# silverlight windows-phone-7 webbrowser-control

我想在WebBrowser控件中调用C#方法。以下是我的代码:

在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不可用。我想从WebBrowser控件中调用window.external.notify函数来调用WebBrowserForDetails_ScriptNotify方法。我该怎么办?

修改

参考链接:MSDN: window.external.notifyAny way to set the WP7 Webbrowser control height Dynamically and lock scrolling?Displaying HTML Content in Windows Phone 7

3 个答案:

答案 0 :(得分:1)

我怀疑您的问题是由于未提供有效的HTML5文档,因为您的(body&amp; html)元素未关闭。

答案 1 :(得分:0)

答案 2 :(得分:0)

您的代码似乎正确,但window.external.notify()方法采用String参数,而不是Integer。请尝试使用window.external.notify('123')调用。 希望这会有所帮助。