【发布时间】:2011-10-27 20:18:13
【问题描述】:
我正在尝试使用 XBAP 来获取 TWAIN 图像,但我什至没有走那么远。我似乎无法让 BrowserInteropHelper.HostScript 让我与主机页面上的 javascript 对话。
- 我在 iframe 中运行 XBAP。
- 我尝试了完全信任(尽管这应该是一项要求)。
- 我正在 IE9、.NET Framework 4.0 上进行测试
- BrowserInteropHelper.HostScript 不为空,我可以使用普通的窗口方法,如 .Close()。
我的代码如下所示:
索引.html:
<p id="someP">My cat's breath smells like cat food.</p>
<script type="text/javascript">
function WorkDamnit() {
$('#someP').hide();
}
</script>
<iframe src="@Url.Content("~/XBAPs/WPFBrowserApplication1.xbap")" style="border: none;" width="500" height="500" />
Page1.xaml.cs:
private void Button_Click(object sender, RoutedEventArgs e)
{
if (BrowserInteropHelper.HostScript == null)
throw new ApplicationException("hostscript is null");
else
BrowserInteropHelper.HostScript.WorkDamnit();
}
我明白了:
System.MissingMethodException: Method '[object Window].WorkDamnit' not found.
新信息:
此方案在网络上的其他 PC 上正常工作,我发现了原因。 IE9 有一个默认开启的设置,叫做“在兼容性视图中显示 Intranet 站点”。这会导致页面以“IE7 模式”呈现,并且 javascript 函数可从 XBAP 获得。如果我单击文档模式:(在 F12 开发人员工具控制台下)并切换到 IE9 模式,则它不再起作用(如上所述)。在我自己的 PC 上,它默认使用 IE9 模式(应该如此),除非我手动切换到 IE7 模式,否则它不起作用。
【问题讨论】:
标签: c# javascript xbap