问题标签 [bho]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2492 浏览

javascript - Internet Explorer 扩展 (BHO) 中的沙盒 Javascript 执行

Firefox 有 Sandbox 和 evalInSandbox()。Chrome 在其内容脚本中具有沙盒执行(他们称之为隔离执行)。我在 IE 浏览器扩展中寻找同样的东西。

我可以加载一个 javascript 文件,然后调用 evalScript(),但代码在与页面上存在的 javascript 相同的环境中执行。我需要一种在沙盒/隔离环境中运行我的库(包括并基于 jQuery)的方法,但仍然允许它修改 DOM,就好像它在页面上运行一样。

Jint 看起来很有希望,但目前无法评估 jQuery。(他们可以解析它。)

我怎样才能做到这一点?

0 投票
1 回答
851 浏览

c# - 失控的 HTTPWebRequest

我有一个用 C# 编写的 Browser Helper 对象,当用户单击 Windows 窗体上的按钮时,它会向我的服务器发出 HTTPWebRequest POST,在正常情况下,这很好用。然而,每隔一段时间,我就会收到一个似乎发疯的 BHO,并不断向我发送大量 HTTPWebRequest(每分钟大约 50 到 100 个)。我能够阻止让客户端重新启动他们的 PC 的行为的唯一方法,通常用户甚至关闭了 IE,但 POST 继续滚动。

有没有人在使用 HTTPWebRequest 时看到过类似的行为?似乎连接中的一些重试逻辑变得疯狂,但我认为 HTTPWebRequest 没有内置任何重试机制,所以这似乎不太可能。

我的连接设置不正确,是否有防止此类事情发生的好策略?

这是我设置连接的方式:

0 投票
2 回答
1546 浏览

javascript - 在 IE 中获取页面引荐来源的最可靠方法是什么?

从浏览器扩展 (BHO) 中,我想知道将用户引至当前页面的 URL。我以为我可以获取 document.referrer,但如果在新窗口中打开链接,我发现它是空白的。这只是强硬的 bikkies 还是我可以在某些情况下使用 opener.location.href 或其他什么?

作为后续,我目前在页面加载时得到这个,即在 DocumentComplete 上,但我更喜欢在 BeforeNavigate2 上得到它。除了在 BeforeNavigate2 上使用当前位置作为引荐来源网址之外,我看不到任何其他方法,但是如果用户在地址栏中输入新 URL,这将为我提供当前页面作为引荐来源网址。即,看起来他们从站点 A 上的链接导航到站点 B,实际上他们去了站点 A,然后输入站点 B 的 URL。

更新:据我所知,有时会设置“opener”属性(如果窗口已从 javascript 打开?),因此我们可以从中获取有效的引用页面。任何人都知道具体在哪些情况下可用?

0 投票
1 回答
466 浏览

internet-explorer - 从 IE DOM 生成 HTML 源代码

有没有办法从 IE 中的实时 DOM 树生成 HTML 源代码?DOM 可能会被 JavaScript 修改,但我只想要最终结果。

如果我想写一个 BHO 来做到这一点,我应该处理哪个事件?

0 投票
2 回答
1217 浏览

javascript - 从 BHO 中的静态方法调用网页上的 javascript

我正在为 Internet Explorer 编写浏览器助手对象,我需要从“静态”(或“全局”)回调方法对所有打开的浏览器实例调用 javascript 方法。

我遇到的问题肯定与 COM 中的多线程有关。我的问题是:

  1. 每个浏览器都会有自己的IWebBrowser2对象指向CComPtr<IWebBrowser2>. 如果我的 BHO 类中有一个静态回调方法,该回调将到达哪个线程?它会是 IE 创建的任何 BHO 线程吗?

  2. 我试图缓存IWebBrowser2在每个 BHO 中创建的所有指针,然后从静态方法中访问它们。但是,我认为涉及到一些(非)编组问题。这行得通吗?关于这样做的好/不同方法的任何建议?

0 投票
2 回答
1458 浏览

c++ - 将对象与 IDispatch 进行比较以仅获取主框架 (BHO)

我不知道是否有人熟悉 BHO(浏览器帮助对象),但 c++ 专家也可以帮助我。

在我的 BHO 中,我只想在主框架上运行 OnDocumentComplete() 函数 - 第一个容器,而不是当前页面内的所有 Iframe。(另一种方法是仅在这是主框架时才放置一些代码)。

我找不到如何跟踪何时填充的主框架。

在谷歌搜索后,我发现每个帧都有“IDispatch * pDisp”,我必须将它与指向第一个的指针进行比较。

这是主要功能:

这是我想知道它是否是主窗口(框架)的地方:

我在微软论坛上问了这个问题,我得到了答案,但没有解释如何实际实现它:http ://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/7c433bfa-30d7-42db-980a- 70e62640184c

0 投票
1 回答
1198 浏览

c++ - 鼠标事件 BHO

我希望我的 BHO 监听某个网页中某些元素的 onmousedown 事件。我有找到特定元素的所有代码,在 msdn 中它说我需要使用get_onmousedown事件。我想出了这个代码。

问题是,当此事件发生时,我如何告诉它运行某些功能?

0 投票
2 回答
3005 浏览

internet-explorer - 浏览器帮助对象未在 IE8 中加载

我有一个 BHO,我可以在 Add On 的列表中看到它已启用。但是当我在 Win2k8 R2 机器(64 位)上启动我的 IE 时,它不会被加载。

我也禁用了 IE 增强安全性,但没有帮助。相同的 BHO 被加载到其他机器上。

(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects & HKEY_CLASSES_ROOT\Wow6432Node\CLSID) 下的注册表详细信息似乎很好。

是否有任何设置禁止 BHO 实际加载?

0 投票
2 回答
2072 浏览

bho - 如何通过 BHO (C#) 拍摄 IE 网页的快照

我正在尝试在 C# 中构建一个 IE BHO,以获取 IE 浏览器中加载的网页的快照。这是我正在尝试做的事情:

此外,我 p/invoke 以下 COM 方法:

现在当我拍摄快照时:

我打电话 CaptureWebScreenImage((IHTMLDocument2) webBrowser.document);

公共静态图像捕获WebScreenImage(IHTMLDocument2 myDoc){

}

我没有得到网页的图像。相反,我得到的是黑色背景的图像。我不确定这是否是正确的做法,但我在网上发现 IViewObject::Draw 方法用于在 IE 中获取网页的图像。

我之前使用 Native PrintWindow() 方法进行图像捕获,如以下代码项目页面中所述 - http://www.codeproject.com/KB/graphics/IECapture.aspx

但是图像大小是巨大的!我试图看看是否可以通过使用其他技术来减小尺寸。如果有人能指出我上面代码中的错误(我相信会有很多),那就太好了。

谢谢,卡皮尔

0 投票
1 回答
524 浏览

c# - 如何在 BHO (C#) 中接收 WM_GETMINMAXINFO 消息

我正在尝试在 C# 中构建一个 IE BHO。我想接收发送到运行 BHO 的 Internet Explorer 窗口的 WM_GETMINMAXINFO 消息。如何才能做到这一点?

谢谢,类似