我想实现一个 Web 浏览器控件来启用我的 WinForm 桌面应用程序的地理位置。
我已经在我的 WinForm 项目中成功实现了 GeckoFX 网络浏览器。问题是当访问启用 HTML5 地理定位的网站/地址时,“允许/拒绝访问”弹出窗口不会出现。
因此,地理位置不起作用。我已确认在首选项中启用了地理位置,并已使用http://html5test.com测试了我的 WinForm ,并且该控件被列为支持地理位置。
我已经尝试通过 XPCom API 为特定域设置权限,以便不需要弹出请求权限:
//CREATE nsSTRING
nsAUTF8String i = new nsAUTF8String("http://html5demos.com");
//CREATE NEW URI
var nsII = Xpcom.CreateInstance<nsIIOService>("@mozilla.org/network/io-service;1");
nsIURI uri = nsII.NewURI(i, "Unicode", null);
//CREATE PERMISSION MANAGER
var instancePM = Xpcom.CreateInstance<nsIPermissionManager>("@mozilla.org/permissionmanager;1");
//GEO PERMISSION SETTINGS
uint permission = Convert.ToUInt32(1);
uint expiretype = Convert.ToUInt32(0);
long expireTime = (long)0;
//ADD GEO PERMISSION SETTINGS (THIS SHOULD ALLOW GEO LOCATION TO JUST RUN WITH NO PROMPT)
instancePM.Add(uri, "geo", permission, expiretype, expireTime);
//TEST PERMISSIONS http://html5demos.com
uint testResult = instancePM.TestExactPermission(uri, "geo"); //RETURN SCORRECT SETTING OF 1 = OK
这确实返回了 1 的测试值,但地理位置仍然不起作用。
我已经看过这个 stackoverflow 问题: Gecko for windows forms and geolocation。如何接受分享我的位置的请求?,但不确定从那里去哪里。
我确信我需要自己实现调用,因为控件只是浏览器窗口,而不是构成浏览器应用程序的所有其他位。有没有人有任何建议或者可能已经使用 WinForms 和 C# 在 GeckoFX 中实现了地理位置?
谢谢安德烈