我正在尝试使用chrome packaged apps,我的第一个屏幕上有一个项目列表,当我点击某个项目时,应该会显示一个详细信息页面。
我只是一个普通的网络应用程序:
<a href="#/detail/{{item.name}}">{{item.name}}</a>
但在打包的应用程序中,我收到以下错误:
无法打开同一窗口链接 “不安全:铬扩展://fsdjiojkljkljdfijkjkijkjkjijikf/index.html#/detail/blablabla”; 尝试target =“_ blank”。
那么我如何在Chrome打包的应用程序中进行某种导航?
由于
答案 0 :(得分:3)
正如@ romario333所指出,请参阅https://stackoverflow.com/a/15769779/122441:
您需要使用正则表达式向Angular的白名单中明确添加URL协议。默认情况下,仅启用http
,https
,ftp
和mailto
。使用unsafe:
等协议时,Angular会将非白名单网址加上chrome-extension:
前缀。
将chrome-extension:
协议列入白名单的好地方将在您的模块的配置块中:
var app = angular.module( 'myApp', [] )
.config( [
'$compileProvider',
function( $compileProvider )
{
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension):/);
// Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...)
}
]);
当您需要使用file:
和tel:
等协议时,同样的步骤也适用。
有关详细信息,请参阅AngularJS $compileProvider API documentation。
答案 1 :(得分:2)
Chrome浏览器打包应用中的导航因美学UI原因而被禁用(页面导航不像应用程序那样“感觉”)。请参阅http://developer.chrome.com/apps/app_deprecated.html。
以下是导航的一些替代方法:
- 打开一个新的应用程序窗口
- 操纵当前窗口的DOM
- 使用iframe,沙盒iframe或webview标记。有关文档,请参阅http://developer.chrome.com/apps/app_external.html。
- 使用html片段标识符/链接(我相信这些仍然有用,即使导航没有,但不是正面的)