gpt4 book ai didi

javascript - 替代在 url 中使用 hashbangs 来解决 IE9 问题

转载 作者:搜寻专家 更新时间:2023-11-01 04:41:10 24 4
gpt4 key购买 nike

我正在使用这些设置在 angularjs 中创建一个搜索应用程序:

应用配置:

    app.config(
[
'$locationProvider',
function ($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
rewriteLinks: false
});
}
]
);

问题不在于应用程序本身,而是当我尝试使用 IE9 访问该页面时,我根本无法访问它。在做了一些阅读之后,我发现 IE9 忽略了 url 中 # 之后的所有内容,并将用户重定向回主机 url(url 中#之前的所有内容)并且 html5mode 的标准回退是 hashbang 模式。 Angular docs for $location

我的问题是,是否有人知道在 url 中使用 hashbangs 是否有任何方法,或者其他人是否有这个问题。如果需要更多文件,请告诉我,我会提供!

编辑:这是在 Controller 内部:

    $scope.$on('$locationChangeSuccess', function () {;
$scope.searchQuery = $location.search()['q'];
$scope.search();
});

编辑:添加 $locationProvider.hashPrefix('!'); 将不起作用,因为它只会添加一个“!”在 url 中的“#”之后。

查看 Angular 文档中的图像:

Angular docs on locationprovider

最佳答案

IE9 不支持 history.pushState,参见:http://caniuse.com/#feat=history

因此,当您像这样启用 html5Mode 时:$locationProvider.html5Mode(true)对于 IE9,它将回退到 URL 中的 # - 没有办法解决这个问题

话虽如此,您仍然可以使用 $location.search();您可以获得这样的搜索参数:var searchObject = $location.search();要获取特定参数,您可以执行以下操作:$location.search().paramName

参见 https://docs.angularjs.org/api/ng/service/ $location 获取更多信息。

$location 服务的替代方法是注入(inject) $routeParams,参见:https://docs.angularjs.org/api/ngRoute/service/ $路由参数但我不确定您的用例,routeParams 仅在路由更改完成后更新

关于javascript - 替代在 url 中使用 hashbangs 来解决 IE9 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com