问题标签 [geckofx]

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 投票
2 回答
1875 浏览

c# - 什么是 Web 自动化更好的解决方案 - .NET 中的 Geckofx 或 WebBrowser Control

我正在编写 Web 自动化解决方案,我在过去的一些项目中一直使用默认的 Web 浏览器控件。但是我发现网络浏览器控制的性能不是很好。

运行一段时间后,它通常会挂起应用程序,如果应用程序长时间执行,有时还会导致内存泄漏。

我想知道这里是否有人使用过 Gecko - http://code.google.com/p/geckofx/以及它在执行长时间网络抓取任务方面的性能。我的应用程序在 C# 中。

0 投票
1 回答
2628 浏览

c# - C# 与 XPCOM 的互操作

在问我的问题之前,我应该承认我对 .NET 互操作的了解很少,所以我意识到我可能会犯一个新手错误。

我正在使用GeckoFx库创建一个包含嵌入式 Gecko (Firefox) 浏览器实例的 C# 应用程序。该应用程序使用原始形式的 GeckoFx 运行良好,但我需要使用 MozillansIDOMXPathEvaluator界面扩展它以支持 XPath 查询。

GeckoFx 代码库包括许多公开和使用底层托管 Gecko 接口的示例,我遵循相同的代码模式来公开几个新接口:

随着新接口的暴露,我尝试nsIDOMXPathEvaluator在加载的 DOM 的上下文中评估 XPath 表达式:

尽管前三个变量已正确填充,但调用Evaluate失败并出现异常“尝试读取或写入受保护的内存。”。我倾向于认为问题在于我的代码编组字符串值的方式,因为我在尝试使用表达式参数的编组类型时看到了不同的异常消息。

似乎我不是唯一遇到此问题的人,如本论坛帖子所示,但我无法理解我的实现与 GeckoFx 库中​​的许多其他工作示例有何不同。

任何想法将不胜感激。

谢谢,蒂姆。

0 投票
2 回答
4504 浏览

c# - 从 GeckoFX 网页浏览器组件获取页面源

来自属性的 Html 代码GeckoWebBrowser.Document.DocumentElement.InnerHtml与从服务器下载的 html 不同,因为它被转换为 DOM,并且可能存在更改文档结构的 Javascript。

如何获取真实页面源?

0 投票
1 回答
513 浏览

javascript - 如何在 GeckoFX 中缓存图像

我使用 GeckoFX 来渲染一些 Web 应用程序的 GUI。这里和那里有许多重复的小 16x16 图像通过 javascript 注入到单个 HTML 页面中。

所有这些 IMG 实例都是从 Web 服务器上一一下载的,我无法使用缓存控制或过期标头或使用 javascript Image() 来优化此行为。因此,与 Chrome 或 IE 相比,渲染速度非常慢而且很脏。

如何让 GeckoFX 缓存或预加载几个小图像?

0 投票
2 回答
5154 浏览

c# - 将 GeckoFX DOM 元素传递给 JavaScript 导航调用

使用 GeckoFX 网络浏览器,是否可以像这样通过 JavaScript 传递 GeckoElement,

我正在通过 JavaScript(这很好)atm 选择 DOM 元素,但我在 c# 中有该元素。

0 投票
1 回答
468 浏览

c# - 如何从非托管接口方法正确返回值?

我正在扩展 GeckoFx (http://geckofx.org) 并且在从 XPCom 提供的非托管接口返回数组值时遇到一些问题。

我使用最新的 XulRunner 1.9.2.13 版本为 GeckoFx 添加了大量新功能支持,但是在尝试从接口方法返回数组时出现访问冲突异常。例如:

问题是当 GetDictionaryList 有时返回时,它会返回一个带有单个索引并包含一个字典名称的列表(我在此方法搜索的位置有 2 个字典),并且 count 返回正确的值 2;其他时候,该方法将失败并引发访问冲突,并且 _dictionaries 的值为 string[0] 而 count 保持正确,值为 2。

我想这个问题的最大部分必须是“我在接口声明中正确地编组方法及其参数吗?”。

这个示例代码就是这样 - 一个例子。我想在 GeckoFx 中实现其他几个 XulRunner 功能,但是它们也返回数组并遇到同样的问题。在我能解决这个问题之前,我的工作有点停滞不前。

感谢您提供的所有帮助。

-斯科特

0 投票
2 回答
2536 浏览

c# - Gecko 2.0 的 GeckoFX 更新?

当我上个月找到 GeckoFX 时,我真的很兴奋。我的雇主想在我们的桌面应用程序中分发一个嵌入式浏览器(以平滑从基于桌面的应用程序到基于 Web 的应用程序的过渡),并且能够使用 Gecko 而不是 IE 是一个奇迹!

我可以找到最新版本的 GeckoFX 使用 Gecko 引擎 (Xulrunner) 的 1.9.1 和 1.9.2 版本。这工作得很好,但它错过了本周 Firefox 4 (Gecko 2.0) 附带的许多好东西。

我已经有了 Xulrunner 2.0 的发行版,但 GeckoFX 不能开箱即用。一些 XPCOM API 发生了变化,我敢肯定还有很多其他小的不兼容问题。我想说这应该很容易解决,但我不是 C++ 开发人员,所以我真的不知道。

我现在正在寻找的是以下之一,按优先顺序排列:

  1. 与 Xulrunner 2.0 兼容的 GeckoFX 已构建更新
  2. 另一个允许我在 C# Windows 应用程序中嵌入 Gecko 驱动的 Web 浏览器的解决方案。
  3. 关于自己从哪里开始更新 GeckoFX 的建议(建议我的意思是握住我的手和跟我说话,我是 6 的建议)

只是深入研究代码并尝试对所有错误进行排序并没有帮助。InvalidCastException我在尝试创建一个实例时不断收到一个nsIWebBrowser(不,我不能得到比这更描述性的,因为这就是所有错误消息和堆栈跟踪显示!)。由于似乎还没有人启动嵌入式 Firefox 4,所以这一直是令人头疼和毫无意义的谷歌搜索。

想法?建议?

0 投票
2 回答
5595 浏览

.net - 在多线程应用程序中使用 GeckoFX

在使用 GeckoFX 时,我在掌握如何准确处理线程时遇到了问题——尝试在其他线程中使用 GeckoWebBrowser 时似乎不断抛出错误。

具体来说,我在这个测试应用程序中要做的是生成网页的缩略图并将其显示在表单上(而不是 WebBrowser 控件本身)。在单线程工作时,它工作得很好:

但是,如果我将浏览器的创建和渲染移到它自己的线程中,当我尝试调用 CreateControl() 时会出现 COM 错误:

为了解决这个问题,我也可以将 Xpcom.Initialize 调用移到线程中:

这很好用......一次。我第二次尝试导航时,DocumentCompleted 只会被触发一次(使用 about:blank)。一段时间后,也会弹出 COM 错误。这似乎向我表明调用 Xpcom.Initialize (每个应用程序只能调用一次的静态方法,并且每次后续都不执行任何操作)将 GeckoFX 永久绑定到该特定线程。永远。

有没有办法让 Xpcom 和 GeckoFX 在多线程环境中正常工作?

0 投票
1 回答
1514 浏览

.net - .NET WebBrowser 控件的替代品?

我正在开发一个 .NET 2.0 WinForms 应用程序。它以前包括标准的 Microsoft ActiveX WebBrowser 控件,但我正在研究替代方案。

我需要做什么:

  • 将 WebBrowser 用作应用程序中的标准 Web 浏览器控件

  • 也可以在后台使用它——例如,创建控件、渲染网页并将结果输出到图像(使用 .DrawToBitmap),而无需将控件附加到表单。

  • 挂钩生命周期中的各种事件——主要是 DocumentCompleted。

  • 通过控件的新实例或使用现有控件,可以每 30 秒左右加载(或重新加载)网页。应用程序可以长时间且无限期地保持运行。

  • 必须使用 .NET 2.0。没有 3.0+ 或 WPF 的东西。

到目前为止,我能找到的仅有的三个控件都有相当严重的问题,阻碍了我继续前进:

  • Microsoft ActiveX WebBrowser - 有一个巨大的内存泄漏,使其不适合长时间运行。

  • WebKit.NET - 据我所知,这必须在任何渲染完成之前附加到表单,使其对于缩略图生成部分毫无用处。似乎也遭受内存泄漏的困扰。

  • GeckoFX - 最适合我,但不能正确支持线程(这对于缩略图生成部分至关重要)。

还有其他选择吗?

0 投票
1 回答
1256 浏览

c# - 使用 geckoFx 创建网站缩略图会导致错误

我正在尝试在 WPF/c# 中使用 geckoFX 创建网站的图像。当我运行代码时,我得到一个错误。

错误是位图宽度和高度,使用来自 geckoWebBorwser (int)wWidth 和 (int) wHeight 错误文本是(参数无效)和 System.ArgumentException

线上出现错误

System.ArgumentException)

示例代码:

使用 WebKit.Net 这种方法可以正常工作,使用 IE webBrowser 我有不同的方法并且这种方法可以正常工作,但它们不适合我的项目。