如何使用angular.js在chrome打包应用中进行导航?

时间:2013-11-16 11:06:22

标签: google-chrome angularjs navigation google-chrome-app

我正在尝试使用chrome packaged apps,我的第一个屏幕上有一个项目列表,当我点击某个项目时,应该会显示一个详细信息页面。

我只是一个普通的网络应用程序:

<a href="#/detail/{{item.name}}">{{item.name}}</a>

但在打包的应用程序中,我收到以下错误:

  

无法打开同一窗口链接   “不安全:铬扩展://fsdjiojkljkljdfijkjkijkjkjijikf/index.html#/detail/blablabla”;   尝试target =“_ blank”。

那么我如何在Chrome打包的应用程序中进行某种导航?

由于

2 个答案:

答案 0 :(得分:3)

正如@ romario333所指出,请参阅https://stackoverflow.com/a/15769779/122441

您需要使用正则表达式向Angular的白名单中明确添加URL协议。默认情况下,仅启用httphttpsftpmailto。使用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片段标识符/链接(我相信这些仍然有用,即使导航没有,但不是正面的)