Javascript $state.go将url更改为/#q=hello to/#/q=hello
Javascript $state.go将url更改为/#q=hello to/#/q=hello,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在开发一个chrome扩展,它在google.com.au中注入了一些内容脚本。然后,该内容脚本加载一个具有小界面的基于角度ui路由器的应用程序。我正在使用没有url的$state。所以只有templateUrl和控制器。问题是,当我使用$state.go('home')进入我的小应用程序主页时,中的$state.go会从内部更改位置或url,例如 (1):-https://www.google.com.au/#q=hello 到 (2):-https://www.google.com.au
我正在开发一个chrome扩展,它在google.com.au中注入了一些内容脚本。然后,该内容脚本加载一个具有小界面的基于角度ui路由器的应用程序。我正在使用没有url的$state。所以只有templateUrl和控制器。问题是,当我使用
$state.go('home')
进入我的小应用程序主页时,中的$state.go
会从内部更改位置或url,例如(1):-https://www.google.com.au/#q=hello
到
(2):-https://www.google.com.au/#/q=hello
(有一个额外的/在q之后)
第二个url无效,它将我重定向回google.com.au。另外,值得一提的是,当我将同一个应用程序注入链接的搜索结果页面时,该页面的url中没有任何
,该应用程序运行良好
此外,我还尝试了一些变体,如$state.go
和$state.transitiono
,其中第三个参数为{location:false..}
。但它仍然会像上面那样更改URL。我陷入困境,无法继续进行逻辑推理。
以下是问题的屏幕广播。
我们将非常感谢您的帮助。
提前谢谢 更新
下面是一个包含上述问题的chrome扩展示例。
请将此作为未打包的扩展加载,并尝试转到
在加载扩展之前和之后查看我上面提到的问题
希望这能帮助您的专家解决这个问题。我认为这是ui路由器的预期行为。您可能需要使用本机javascript(window.location.href='XXX')或$location来完全按照您的需要设置hashbang。我认为这是ui路由器的预期行为。您可能需要使用本机javascript(window.location.href='XXX')或$location来完全按照您的需要设置hashbang。好的,经过大量的研究和尝试。 下面是更改状态时不会更改url的代码。 我不得不使用HTML5模式。更多详细信息和用法可在此处找到。
$location#html链接重写
stackoverflow post
希望这有帮助,有人在那里 好吧,经过这么多的研究和尝试。 下面是更改状态时不会更改url的代码。 我不得不使用HTML5模式。更多详细信息和用法可在此处找到。
$location#html链接重写
stackoverflow post
希望这有帮助,有人在那里 我们可以关闭这个预期的行为吗?我们可以关闭这个预期的行为吗?
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("!")
}])