2011-11-27 163 views
4

我想调用WebBrowser控件中的C#方法。下面是我的代码:在WebBrowser控件中,window.external不可用

在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

+1

我假设你的意思是Windows-Phone-7?不是Windows Mobile。为了将来的参考,我们更喜欢一个stackoverflow问题的内容实际上包含一个问题。你是事实陈述。 – AnthonyWJones

+0

@AnthonyWJones是的,我正在谈论WP7。我还编辑了这个问题是一个问题。感谢您的评论:) –

回答

0

您的代码似乎是正确的,但window.external.notify()方法是采用String参数,而不是整数。改为尝试window.external.notify('123')调用。 希望这有助于。

+0

问题是,'window.external'只返回空,所以我甚至不能回到'window.external.notify' –

+0

有测试项目适用于我:http://www.fileserve.com/file/BhVhMAZ/HTML.zip – Ku6opr

+0

文件现在不可用...请提供代码或新链接! – 70sCommander

1

我怀疑你的问题是由于未关闭未提供有效的HTML5文档作为(身体& HTML)元素。

+0

+1对于最后一点,但您需要更仔细地阅读问题中的代码,您的前两点都不是真的。 – AnthonyWJones

+0

这不是一个HTML5文档。我没有声明doctype:'<!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01 Transitional // EN” “http://www.w3.org/TR/html4/loose.dtd”> '。根据HTML4规范(以及HTML5规范),您不需要关闭body和html标签。虽然我把结束标签,我仍然'window.external'给出一个空值:( –