我正在开发一个chrome扩展程序,它会在google.com.au中注入一些内容脚本。该内容脚本然后加载具有小接口的基于角度ui路由器的app。我正在使用没有网址的$ state。所以只有templateUrl和控制器。问题是,当我使用$state.go('home')
转到我的小应用的主页时,$state.go
会在内部更改位置或网址,例如,
(1) :- https://www.google.com.au/#q=hello
到
(2) :- https://www.google.com.au/#/q=hello
(有一个额外的/在q之后)
第二个网址无效,将我重定向回google.com.au
此外,值得一提的是 - 当我将其注入链接的搜索结果页面时,相同的应用程序工作正常,其中网址中没有任何#
。
此外,我尝试了$state.go
和$state.transitionTo
之类的变体,第三个参数为{location:false ....}
。但它仍然改变了上面的网址。
我被困住了,无法继续推进逻辑
这是问题的截屏视频
http://screencast.com/t/ZrBtlkU3z
任何帮助将受到高度赞赏
提前谢谢。
更新
这是一个包含上述问题的chrome扩展示例。
https://Vikasg7@bitbucket.org/Vikasg7/example-app.git
请将其作为未打包的分机加载并尝试转到
https://www.google.com.au/#q=hello
在加载扩展程序之前和之后,看看我上面提到的问题。
希望这可以帮助您解决问题的专家。
答案 0 :(得分:0)
我认为这是ui-router的预期行为。您可能需要使用本机javascript(window.location.href =' XXX')或者$ location来完全按照您的意愿设置hashbang。
答案 1 :(得分:0)
好的,经过大量的研究和打击和试验。
这是在更改状态时不会更改URL的代码。
我不得不使用html5Mode。更多详细信息和用法可在此处找到
https://docs.angularjs.org/guide/ $#位置的HTML链接重写
stackoverflow post
AngularJS 1.1.5 - automatically adding hash tag to URLs
angular
.module("app", ["ui.router", "app.services", "app.directives", "app.controllers"])
.config(["$stateProvider", "$locationProvider", function ($stateProvider, $locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
rewriteLinks: true
}).hashPrefix("!")
}])
希望这有帮助,有人在那里!