GeckoFX观察员服务
我正在尝试将页面上的特定图像加载,但我遇到了一些麻烦. geckowebbrowser的httpactivitivitivity observer正在返回未实现的异常并崩溃了我的程序,因此我正在尝试实现自己的观察者,但没有调用观察方法. 任何想法都会有所帮助. public class HttpObserver : nsIObserver { private nsIObserverService service; private List bans; public HttpObserver() { bans = new List(); service = Xpcom.CreateInstance("@mozilla.org/observer-service;1"); } public void Register()
16 2024-04-26
编程技术问答社区
提交按钮在GeckoFX中不起作用
我有此代码: 并在C#中尝试了此操作: GeckoInputElement enter = new GeckoInputElement(myBrowser.Document.GetElementByTagName("input").DomObject); enter.click(); c#没有任何错误,但行不通! 解决方案 尝试以下代码 GeckoInputElement enter = (GeckoInputElement)myBrowser.Document.GetElementsByTagName("input") .First(inp => ((GeckoInputElement)inp).Value == "enter"); DomEventArgs ev =
6 2024-04-26
编程技术问答社区
如何从GeckoWebBrowser控件加载另一个JQuery版本
我在C#中使用壁虎浏览器.以下代码显示jQuery已加载. GeckoWebBrowser GWB = new GeckoWebBrowser ..... bool JSExec; string JSresult = ""; string JStext = @"alert(jQuery.fn.jquery);"; using (AutoJSContext JScontext = new AutoJSContext(GWB.Window.JSContext)) { JSExec = JScontext.EvaluateScript(JStext, (nsISupports)GWB.Window.DomWindow, out JSresult); } 警报框显示1.4.4 是否可以加载较新版本的jQuery?例如2.0.2 => 编辑以重播@john 是的,我正在使用geckofx.要包含库, geckobrowser_documentCompleted
8 2024-04-25
编程技术问答社区
使用壁虎导航时阻止图像,闪存,样式的方法?
我需要从ABC制作一个机器人"获取视频链接". 我使用httpwebrequest和httprespone,但我意识到该网站具有Ajax文本,而HttpWebsite无法理解. - >我决定使用geckowebrowser 逐步 1.使用geckowebrowser documentComplete事件并使用导航到网站 2.使用geckobutton单击并等待5秒钟以获取Ajax文本 - >成功但太慢,它延迟加载样式,图像,闪光等 所以我尝试搜索,我明白了 "加载DOM时,DomContentload的事件会发射,但是在加载所有页面资产之前(CSS,图像等)."是的,这就是我想要的,我不想加载图像,闪光... 但是当我使用它时,我会得到此代码 GeckoWebBrowser web2 = new GeckoWebBrowser(); web2.DOMContentLoaded += Web2_DOMContentLoaded; priva
14 2024-04-25
编程技术问答社区
禁用 JavaScript 警报 GeckoFX C#
我正在尝试在geckofx-33 + xulrunner 33(winforms c#)中禁用JavaScript警报,但我找不到解决方案.我检查了示例代码,源代码,但是我找不到可以阻止警报的东西.我在about:config中也没有成功. 有人知道我可以在哪里找到参考吗? 解决方案 geckoWebBrowser1.JavascriptError += (sender, error) => { GeckoWebBrowser browser = geckoWebBrowser1; string text = "window.alert = function(){};"; using (AutoJSContext context = new AutoJSContext(browser.Window.JSContext)) {
2 2024-04-24
编程技术问答社区
如何从gecko网页浏览器中获取HTML源代码?InnerHtml不存在了
geckofx v22 GeckoElement element = null; var geckoDomElement = WebBrowser1.Document.DocumentElement; if(geckoDomElement is GeckoElement) element = (GeckoElement)geckoDomElement ; var innerHtml = element.InnerHtml; ,但没有更多的InnerHtml方法.如何从Gecko Web浏览器中获取源html? 解决方案 铸成geckohtmlelement而不是壁虎. GeckoHtmlElement element = null; var geckoDomElement = WebBrowser1.Document.DocumentElement; if(geckoDomElement is GeckoHtmlElement) { element =
6 2024-04-24
编程技术问答社区
如何在geckofx浏览器中添加全屏支持?
我正在C#.NET Windows表单应用程序中构建Web浏览器,并希望添加对全屏用法的支持(主要是在HTML5视频上). ,当用户按视频(例如YouTube视频)上的全屏按钮时,视频将占用全屏幕. 浏览器使用geckofx控件查看InterWeb.我该怎么做? 解决方案 将浏览器控件设置 Dock 属性 Dock.Fill . 您可以在当前显示编程的地方获取 Screen 大小,并使用其 Bounds 来尺寸. 订阅 Resize 事件.最大化表单时,删除边框(也将删除标题栏),将 FormWindowState 设置为 FormWindowState.Normal (否则您将不会能够使用全屏尺寸),然后根据需要调整大小. 您的应用程序应为DPIAware(如果看不到在这里). 您还应该处理F11键,以允许用户最大化/归一化表单的窗口. using System; using System.Drawing; using System.Windo
10 2024-04-24
编程技术问答社区
为GeckoFX网络浏览器设置cookies?
如何为壁虎网络浏览器设置cookie? 我知道我必须致电: geckowebbrowser.Document.Cookie = ...; 但是您也需要在全球设置cookie.例如,在.NET中包含Microsoft IE WebBrowserControl,您可以使用以下Winapi函数设置它们: static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData); 这对IE Web浏览器不错,但对壁虎不适. 我试图通过调用cookiemanager.add(...) 来使用gecko库中的cookiemanager类 解决方案 这对我有用geckofx浏览器29.0: string cookieName = "testName"; strin
18 2024-04-23
编程技术问答社区
C#结合GeckoFX + Tor.NET库
我正在尝试结合geckofx库和tor.net库. 在我的代码中,我都准备使用Tor Network, ClientCreateParams createParameters = new ClientCreateParams(); createParameters.ConfigurationFile = ConfigurationManager.AppSettings["torConfigurationFile"]; createParameters.ControlPassword = ConfigurationManager.AppSettings["torControlPassword"]; createParameters.ControlPort = Convert.ToInt32(ConfigurationManager.AppSettings["torControlPort"]); createParameters.DefaultConfigurationFile
10 2024-04-23
编程技术问答社区
如何知道gecko浏览器是否完成了网页的加载?
正如标题所说,我怎么知道壁虎浏览器是否完成了加载网页? 我知道有document_completed事件.但是,每当网页加载时,它都会触发. 还有其他方法可以检查当前网页是否已完成加载. 解决方案 我在vb.net和geckofx v45.0.34.0中的解决方案可以使用此工具转换为c#( http://converter.telerik.com/): Private vWeb As GeckoWebBrowser = New GeckoWebBrowser Private Property pageready As Boolean = False Private Sub WaitForPageLoad() AddHandler vWeb.DocumentCompleted, New EventHandler(Of GeckoDocumentCompletedEventArgs)(AddressOf PageWaiter) While Not pager
8 2024-04-21
编程技术问答社区
这可能吗?GeckoFX可以在每个实例中使用单独的CookieContainer吗?
我正在使用Geckfx22.0和xulrunner22.0.由于.net中的geckowebbrowser与所有其他实例的geckowebbrowsers共享cookie,所以我希望geckowebbrowser拥有自己的cookie容器,该容器没有共享其他geckowebbrowsers或其他实例中创建的cookie. 例如,当我创建geckowebbrowser时,它不应该有任何cookie.当我运行2个geckowebbrowser的实例时,他们有自己的cookie容器,并且不会彼此共享或冲突饼干. 怎么可能? 我通过创建不同的类和启动geckofx尝试了各种可能的方法,但是当同时运行不同的浏览器时,它在其他浏览器中共享cookie.如果我从一个浏览器中删除cookie,其他浏览器也会发生同样的情况.我已经在不同的时间及其作品启动了proxy和useragent,但不能同时为多个浏览器应用各种用户. public void Initiate() {
8 2024-04-20
编程技术问答社区
使用 WinForms GeckoFX 控件从 C# 调用 javascript 函数的推荐方法是什么?
问题说明了一切.我已经有一切融合了,并且知道如何将消息从浏览器HTML发送到C#,但不是相反的. 我应该能够做类似的事情: browserControl.JSCall("myFunction('Dave','Smith');"); ...在Web代码中: function myFunction(firstName, lastName) { $("#mydiv").text(firstName + ' ' + lastName); } 谢谢-Dave 解决方案 您可以使用导航: 进行此操作 browserControl.Navigate("javascript:void(myFunction('Dave','Smith'))"); 注意,我发现在应用程序事件循环执行之前,该代码实际上才真正运行.如果这对您来说是一个问题,您可能可以按照 进行导航呼叫 Application.DoEvents(); 确保您考虑明确致电
4 2024-04-17
编程技术问答社区
帮助使用GeckoFX的代理用户名和密码?
我正在尝试设置代理用户名和密码.我看到了这篇文章( skybound.gecko.geckopreferences.user [" network.proxy.user"] =(user); skybound.gecko.geckopreferences.user [" network.proxy.password"] =(密码); 但是,到目前为止什么都没有.谁能帮忙?我真的很感激!!! 我正在使用vb.net,如果有帮助.谢谢! 解决方案 您可能需要将代理类型设置为1. 要自动检测代理设置,请尝试以下操作: Uri website = new Uri("http://stackoverflow.com"); System.Net.IWebProxy defaultproxy = System.Net.WebRequest.GetSystemWebProxy(); Uri proxy = defaultproxy.GetProxy(website); //no
8 2024-04-16
编程技术问答社区
geckowebbrowser访问错误的URL,始终弹出消息框
www.addssds333333fdsd.com.cn找不到.请检查名称,然后重试. GeckoWebBrowser _webA = new GeckoWebBrowser(); _webA.Navigate("www.addssds333fdsd.com.cn"); 当我访问错误的URL时,应用程序将弹出消息框. 如何捕获异常或删除消息框. 解决方案 您需要实现NSIPROMPTSERVCICE2和NSIPROMPT INTERFACE 在那里,您将获得一个方法列表(例如Alert();),您根本不提供实现. 那将"抓住"例外. 创建以下类(您需要为许多方法提供实现,例如警报,确认,提示等 public class FilteredPromptService : nsIPromptService2, nsIPrompt { public void Alert(string dialogTitle, string text)
8 2024-04-15
编程技术问答社区
如何在geckofx中设置用户代理?
使用WebBrowser控件一段时间后,我决定尝试一下Gecko,因为Webbrowser我经历的问题,低速和降解性能.我下载了Geckofx(16.0.0.2)和Xulrunner(16.0.2)的最新版本,并创建了Geckowebbrowser控件.当我尝试导航到网页时,我得到了一个JavaScript.请注意,不支持我的Web浏览器,我应该使用Firefox> 2.0.0.2当然哪个是荒谬的. 问题是 - 我认为 - 检测到的用户词字符串为" Mozilla/5.0(Windows NT 6.1; WOW64; RV:16.0)gecko////16.0",而不是普通的Firefox String" Mozilla/5.0(Windows NT 6.1; WOW64; WOW64; RV:18.0)壁虎/20100101 Firefox/18.0". " 20100101"和" Firefox"中缺少控件的用户字符串.有什么方法可以使用C#更改它? 我使用c#winforms .n
14 2024-04-15
编程技术问答社区
如何在GeckoFX中处理下载问题 29
我如何处理 geckofx 我正在使用版本 29 我找到了一些方法,例如添加 的事件 LauncherDialog_Download(object sender, LauncherDialogEvent e) 但是,我无法为此事件添加处理程序 我为处理程序尝试了一下 LauncherDialogFactory.Register(); LauncherDialog.Download += LauncherDialog_Download; 但是,它显示为错误,我如何添加处理程序 还有其他方法可以处理 geckofx 29 ? 中的下载方法 解决方案 在您的 之后的形式加载中 browser.navigate("http://www.domain.com"); 使用此: LauncherDialog.Download += LauncherDialog_Download; 创建launcherdialog_download void Launc
6 2024-04-14
编程技术问答社区
如何让 Gecko 在每个实例中使用单独的 CookieContainer?
由于.net中的geckowebbrowser与所有其他实例的geckowebbrowsers共享cookie,所以我希望geckowebbrowser拥有自己的cookie容器,它没有自己的cookie容器,该容器没有共享以前在其他geckowebbrowsers或其他实例中创建的cookie. 因此,例如,当我创建geckowebbrowser时,它不应该有任何cookie.当我运行2个壁虎的实例时,他们有自己的cookie容器,并且不会共享或冲突饼干. 怎么可能? 解决方案 您可以更改cocie唯一副本(以及所有其他用户设置): string profileDir = "UniqueIdentifier"; string directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Path.Combine("Geckofx
12 2024-04-14
编程技术问答社区
运行多个UI线程
跳到底部以获取问题;这只是一些额外信息 我正在使用一个组件(geckofx)渲染一些网站,很好,但是只能在窗口表单中使用.因为它必须绑定到可以绘制的winforms对象.因为所有的Winforms都在同一线程中运行,所以我一次只能使用一个geckofx实例.因此,我决定以Winform的形式创建一个"工人类",并在其中添加所有逻辑.该表格不需要与主形式进行通信. 现在,我可以启动10个窗口,最终可以工作,但是每种新表单都会等待,然后所有其他表格都处理了所有壁虎事件,因为您不能在一个线程上使用多个实例.此外,浏览器必须在UITHREAD上.所以: 是否可以创建多个UI线程(每个形式一个)? 我已经看到有人在这样做([编辑:删除'bad'链接]),但没有人能使他的代码示例有效.最初使用它的人使用某种形式的自定义消息来做这种事情,但是我不知道如何实现这样的事情. 解决方案 我认为您所问的不是您想要的,但是每个线程创建消息泵很容易,您只需要调用应用程序. sta
4 2024-04-11
编程技术问答社区
GeckoFX WebBrowser页面高度和宽度
有人知道我如何在geckofx中获得完整的页面高度和宽度吗? 在IE WebBrowser对象中,我可以查看webbrowser.document.body.scrollrectangle. (这里的目的是为整个页面进行屏幕截图) 谢谢! 解决方案 我正在使用 hindle的叉子 geckofx的fork ,这是我做的: var width = _browser.Document.ActiveElement.ScrollWidth; var height = _browser.Document.ActiveElement.ScrollHeight; 我用它来创建页面的缩略图.请注意,这使我们可以通过第一个页面占用的大小,而不一定是当前页面的大小.我通过在我的缩略图中使用不同的浏览器实例来解决这个问题. 其他解决方案 我做到了: BROWSER = new GeckoWebBrowser(); BROWSER.Height = 1920; BROWSE
8 2024-04-04
编程技术问答社区