【发布时间】:2014-07-31 18:12:22
【问题描述】:
我正在尝试为 IE 10 的发布预览开发 BHO。BHO 需要能够允许 javascript 调用 C# 函数。
我已按照此处提供的说明进行操作:
Calling C# BHO methods from Javascript
这些说明在 IE 9 中运行良好。
不幸的是,我发现它们仅适用于在 IE 10 中创建的第一个选项卡。第二个和后续选项卡不会将 BHO 接口暴露给 Javascript。有时,新标签会起作用,但大多数时候它们不起作用。而且,它默默地失败了。我猜这与流程模型有关——但同样,它在 IE 9(具有相同的流程模型)中运行良好。
这是我正在使用的代码的特定 sn-p:
private void InstallJSObject(IHTMLWindow2 window)
{
// Install our javascript object
IExpando windowEx = (IExpando)window;
PropertyInfo property = windowEx.GetProperty("myBHO", System.Reflection.BindingFlags.IgnoreCase);
if (property == null)
{
property = windowEx.AddProperty("myBHO");
}
property.SetValue(windowEx, this, null);
}
发帖前,我研究了以下内容:http://bit.ly/R9qldf
【问题讨论】:
-
您可能想在Microsoft Connect 上发布此内容,因为它看起来更像是发布候选(仍是预发布软件)的错误,而不是已被支持发布的内容。这很可能是“过于本地化”。
-
我在 IE10 的发布版本中看到了同样的问题。这个问题依然存在。
-
那么你是如何调用InstallObject的?如果您正在关注这篇文章:codeproject.com/Articles/19971/… 您被调用了多少次 SetSite?每个浏览器都应该调用一次。另外,请记住,每个选项卡都是不同的进程,因此如果您只是使用调试器进行验证,那么您必须附加到每个进程。
标签: c# bho internet-explorer-10