我希望我的浏览器(geckofx)在我的网页中单击按钮时执行.NET函数.我有以下代码: public Form1() { InitializeComponent(); AddMessageEventListener("myFunction", ((string s) => this.showMessage(s))); browser.LoadHtml ( @" function fireEvent(name, data) {
以下是关于 geckofx 的编程技术问答
跳到底部以获取问题;这只是一些额外信息 我正在使用一个组件(geckofx)渲染一些网站,很好,但是只能在窗口表单中使用.因为它必须绑定到可以绘制的winforms对象.因为所有的Winforms都在同一线程中运行,所以我一次只能使用一个geckofx实例.因此,我决定以Winform的形式创建一个"工人类",并在其中添加所有逻辑.该表格不需要与主形式进行通信. 现在,我可以启动10个窗口,最终可以工作,但是每种新表单都会等待,然后所有其他表格都处理了所有壁虎事件,因为您不能在一个线程上使用多个实例.此外,浏览器必须在UITHREAD上.所以: 是否可以创建多个UI线程(每个形式一个)? 我已经看到有人在这样做([编辑:删除'bad'链接]),但没有人能使他的代码示例有效.最初使用它的人使用某种形式的自定义消息来做这种事情,但是我不知道如何实现这样的事情. 解决方案 我认为您所问的不是您想要的,但是每个线程创建消息泵很容易,您只需要调用应用程序. sta
我正在将gecko15与mozilla xul15一起用作我的Visual Basic应用程序上的Web浏览器 有人知道我如何处理下载? 因为,当我单击文件以从该浏览器下载时,什么都不会发生. 非常感谢您的任何帮助. 解决方案 也: @Form负载事件: 添加: Addhandler Gecko.launcherdialog.download,downerog_download的地址 然后 私有sub sub launcherdialog_download(byval sender作为对象,byval e gecko.launcherdialogevent) e.cancel() 尝试 将EX视为例外 最后 E.Navigate(Nothing)'防止异常的DM行为 结束尝试 结束子 希望有帮助, 其他解决方案 这是我们所有人的头痛,无法让用户在嵌入式(VB Net)壁虎浏览器中下载文件.匿名天才的" kixpsider(我的朋友万岁)"结束
我正在使用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()
如何为壁虎网络浏览器设置cookie? 我知道我必须打电话: geckowebbrowser.Document.Cookie = ...; 但是您也需要在全球设置cookie.例如,在.NET中包含Microsoft IE WebBrowserControl,您可以使用以下Winapi函数设置它们: static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData); 这适用于IE Web浏览器,但对Gecko不正常. 我尝试通过调用cookiemanager.add(...) 来使用gecko库中的cookiemanager类 解决方案 这对我有用geckofx浏览器29.0: string cookieName = "testName";
由于.net中的geckowebbrowser与所有其他实例的geckowebbrowsers共享cookie,所以我希望geckowebbrowser拥有自己的cookie容器,该容器没有共享以前在其他geckowebbrowsers或其他实例中创建的cookie. 因此,例如,当我创建geckowebbrowser时,它不应该有任何cookie.当我运行2个壁虎的实例时,他们会有自己的cookie容器,并且不会彼此共享或冲突饼干. 怎么可能? 解决方案 您可以更改cocie(以及所有其他用户设置)的独特副本: string profileDir = "UniqueIdentifier"; string directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Path.Combine("Geckofx", profileD
我正在为vb.net使用最新的geckofx-45浏览器. 我的问题: 我无法获得iframe的HTML. 这是我的代码: 'Open Recaptcha2 test site Browser.Navigate("http://patrickhlauke.github.io/recaptcha/") 'Wait for loading (all ways I know) Browser.NavigateFinishedNotifier.BlockUntilNavigationFinished() Dim maxTimeouttime As DateTime = DateTime.Now.AddSeconds(4) While DateTime.Now
我试图用geckofx v33和javaScript向下滚动页面. 我的C#代码如下: private void scrollWb() { string command = "window.scrollTo(0, document.body.scrollHeight);"; using (Gecko.AutoJSContext context = new AutoJSContext(wb.Window.JSContext)) { var result = context.EvaluateScript(command, wb.Window.DomWindow); } 我的代码不起作用...有人可以帮我吗? 谢谢. 解决方案 使用窗口对象的方法处理滚动: 另外,您可以使用geckohtmlelement的.scrollintoview()属性进入特定元素.
我试图隐藏geckofx webbrowser控件的滚动条,在Windows表单中,有方法可以隐藏scrollbar webbrowser1.scrollbarsenabled = false; 但是在geckofx webbrowser中,没有这样的属性 我正在使用导航方法 geckowebbrowser.navigate(" url"); 解决方案 这有效.如果需要,您可以创建自己的ScrollBarseNabled属性. webBrowser1.Document.Body.Style.CssText = "overflow: hidden ! important;";
我在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 => .com/ajax/libs/jquery/2.0.2/jquery.min.js 编辑以重播@john 是的,我正在使用ge
我有此代码: 并在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 =
我正在尝试使用此方法: GeckoMIMEInputStream postdata = new GeckoMIMEInputStream(); postdata.AddHeader("Accept-Language", "ru,en-us;q=0.7,en;q=0.3"); browser.Navigate(someurl, flags, referer, postData); ,但它添加了" ru,en-us; q = 0.7,en; q = 0.3"已存的"接受语言"字符串!如何覆盖? 解决方案 我找到了它,要更改accept_languages: GeckoPreferences.User["intl.accept_languages"] = "ru";
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 =
我正在尝试在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)) {
正如标题所说,我怎么知道壁虎浏览器是否完成了加载网页? 我知道有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 pagere
我正在尝试将页面上的特定图像加载,但我遇到了一些麻烦. 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(
我正在使用Windows应用程序中的Gecko Web浏览器版本21.0.1和.NET Framework 4.0. 当我导航到某些网页时,我会得到弹出确认消息: 此网页正在重定向到新位置.你是否想要 将您输入的表单数据重新发送到新位置? 如何禁用这种消息? 到目前为止,我已经尝试了以下设置,但它们没有帮助: GeckoPreferences.User["security.warn_viewing_mixed"] = false; GeckoPreferences.User["plugin.state.flash"] = 0; GeckoPreferences.User["browser.cache.disk.enable"] = false; GeckoPreferences.User["browser.cache.memory.enable"] = false; 解决方案 您可以尝试提供自己的nsIPromptService2/nsIPrompt实
我正在尝试将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 =
我正在使用代码: ((GeckoSelectElement) geckoWebBrowser1.Document.GetElementById("OA0001_dob_month")).Value = "Jul"; 但它不起作用.如何在geckofx c#中的selectbox中选择一个值,而无需使用jscontext? 解决方案 通过索引选择一个值: var document = GeckoWebBrowser1.Document; var selectElement = (GeckoSelectElement)document.GetElementById("OA0001_dob_month"); selectElement.SelectedIndex = 2;