铬+;原始Html(直接来自C#字符串)和#x2B;角度=>;尝试使用路由时出现的问题 头孢夏普:1.25.0(基于铬25.0.1364.152) 角度:1.3.0-beta16 UIRouter:0.2.10
我正在开发一个独立的C#应用程序,它使用CefSharp Chromium+Angular+UIRouter作为GUI所依赖的堆栈 我尝试让上面的堆栈加载此处提供的示例代码,结果非常成功:铬+;原始Html(直接来自C#字符串)和#x2B;角度=>;尝试使用路由时出现的问题 头孢夏普:1.25.0(基于铬25.0.1364.152) 角度:1.3.0-beta16 UIRouter:0.2.10,html,angularjs,routes,location,chromium,Html,Angularjs,Routes,Location,Chromium,我正在开发一个独立的C#应用程序,它使用CefSharp Chromium+Angular+UIRouter作为GUI所依赖的堆栈 我尝试让上面的堆栈加载此处提供的示例代码,结果非常成功: 为了使GUI的HTML+Javascript库更加优雅,请在应用程序的.Net可执行文件中的单个资源文件中进行组合 然后,该资源在应用程序初始化期间以编程方式传递到Chromium控件(通过.LoadHtml)以直接加载到浏览器中,也就是说,HTML不是从硬盘驱动器或远程HTTP服务器上的单独.HTML文
- 为了使GUI的HTML+Javascript库更加优雅,请在应用程序的.Net可执行文件中的单个资源文件中进行组合
- 然后,该资源在应用程序初始化期间以编程方式传递到Chromium控件(通过.LoadHtml)以直接加载到浏览器中,也就是说,HTML不是从硬盘驱动器或远程HTTP服务器上的单独.HTML文件加载的。如果HTML是从后来的(“标准”)场所加载的,那么一切都会完美地工作
- 首先,调用:
里面history.pushState(null, "", url);
抛出异常self.url = function(url, replace) { ... }
传递给.pushState的url为:Error: SecurityError: DOM Exception 18 Error: An attempt was made to break through the security policy of the user agent. at Browser.self.url (about:blank:8004:21) at about:blank:10049:24 at Scope.$eval (about:blank:11472:28) at Scope.$digest (about:blank:11381:31) at Scope.$apply (about:blank:11493:24) at about:blank:6818:15 at Object.invoke (about:blank:7814:19) at doBootstrap (about:blank:6817:16) at bootstrap (about:blank:6827:14) at angularInit (about:blank:6796:7)
这似乎是将“about:blank”与默认状态“/home”连接在一起的结果about:blank#/home
- 第二,即使上述问题得到解决,内部似乎也存在一个重大问题:
这将导致以下错误:$rootScope.$watch(function $locationWatch() { ... })
原因是当“window.location”设置为“about:blank”时Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
总是回来$browser.url()
当 返回about:blank
导致$watch不停地开火about:blank#/home
提前感谢,如果这个问题已经在其他地方得到解决,我深表歉意。大多数浏览器不允许在文件系统上使用AJAX。但是Chromium可以调整以实现这一点:
browser = new ChromiumWebBrowser(path);
browser.BrowserSettings = new BrowserSettings();
browser.BrowserSettings.FileAccessFromFileUrlsAllowed = true;
默认情况下,Firefox允许在从加载的html文件中加载外部文件”file:///...“。但Chrome没有。在CefSharp(Chrome)中,您可以通过以下方式执行此操作:
// Allow angular routing and load external files
BrowserSettings setting = new BrowserSettings();
setting.FileAccessFromFileUrls = CefState.Enabled;
browser.BrowserSettings = setting;
this.Controls.Add(browser);
// Allow angular routing and load external files
BrowserSettings setting = new BrowserSettings();
setting.FileAccessFromFileUrls = CefState.Enabled;
browser.BrowserSettings = setting;
this.Controls.Add(browser);