【发布时间】:2013-12-12 16:45:04
【问题描述】:
我目前正在尝试构建一个在闪存驱动器上运行的“网络应用程序”,因此不可能有任何其他环境需要启动带有一些启动选项的 chrome 和指向 index.html 文件的路径闪存驱动器。
当使用 file:// 协议而不是通过 Web 服务器加载文件时,我无法让 angularJS 正常运行。
我已经通过将 html5 模式设置为 true 来加载本地资源(如视频),但我目前无法使用路由提供程序。
这是我所拥有的: var testApp = angular.module("testApp", ['angular-underscore', "ngRoute", "com.2fdevs.videogular"]);
testApp.config(function($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider.when('/', {template: '/views/MainView.html', controller: "VideoPlayerController" })
.otherwise({redirectTo:'/'});;
});
每当我通过双击文件在 Chrome 中加载我的 index.html 文件时,URL 都会以“file://”开头。当我使用 essential 选项“--allow-file-access-from-files”通过命令行启动时也会发生这种情况。
如何让 routeProvider 按预期使用 file://?除非我将以下内容添加到 index.html 中的 head 标记中,否则它目前甚至无法识别“其他”路线
<base href="/index.html">
但结果是
file:///
在 Chrome 的 URL 字段中。所有其他资源都无法加载。 下面是我在一个控制器组合中看到的错误示例。
GET file:///index.html net::ERR_FILE_NOT_FOUND
非常感谢! (我知道如果我愿意使用网络服务器,我所有的问题都会消失,但我目前不允许参与这个项目)
【问题讨论】:
-
我是。为什么?这有什么不同吗? :)
-
angular 文档说“$route 用于深度链接 URL”。文件:协议不是网址;简而言之,没有queryString、fragments等,如果不修补角度代码,它可能永远无法工作......
-
在stackoverflow.com/questions/15677882/… 有人说“Angular 是一个客户端 JS 框架,所以它不需要网络服务器。”。希望确实有办法! :)
-
大部分 Angular 在没有服务器的情况下确实可以正常工作。以一种我以前没有注意到的方式,由于您发现的原因,路由确实巧妙地依赖于拥有服务器。可能还有其他障碍,例如 localStorage/cookie、历史记录和 CSP 问题。查看文件时不要期望大多数浏览器提供完整的功能;当 IE5+6 做到这一点时,每个人都最讨厌的事情......很难在单个 html 文件中制作一个可分发的应用程序。
-
我可能错了,但是你想如何在没有正确重定向的情况下使用 HTML5 模式?
标签: javascript html google-chrome angularjs chromium