Я развернул приложение AngularJS, скомпилированное с Brunch для Heroku.Это приложение использует UI Router с несколькими состояниями.
Я заметил, что не могу вернуться в Google, если нажимаю кнопку возврата браузера в моем приложении AngularJS.После отладки нескольких приложений во всех из них проблема остается той же: когда я нажимаю кнопку возврата браузера, UI Router перехватывает URL-адрес как маршрут AngularJS.Поскольку маршрут не существует, в противном случае выполняется функция.
Я развертываю свои приложения в Heroku.Вот некоторые из моих приложений:
Если я попытаюсь воспроизвести эту проблему на локальном хосте, этого не произойдет.Возможно, что Heroku делает любое перенаправление, которое нарушает обратную навигацию, но я хочу отменить, я делаю что-то не так.
Основной файл router.js:
(function() {
"use strict";
angular
.module("routes")
.config(config)
.run(run);
config.$inject = ["$urlRouterProvider", "$stateProvider"];
function config($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise(function($injector, $location) {
$location.path("/");
});
$stateProvider
.state("layout", {
url: "",
abstract: true,
views: {
header: {
templateUrl:
"app/angular/views/layouts/header/header.html",
controller: "HeaderController as header"
},
footer: {
templateUrl:
"app/angular/views/layouts/footer/footer.html",
controller: "FooterController as footer"
}
},
resolve: {}
})
.state("home", {
url: "/",
views: {
"main@": {
templateUrl: "app/angular/views/home.html",
controller: "HomeController as home"
}
},
parent: "layout",
resolve: {}
})
.state("cookies-policy", {
url: "/politica-de-cookies",
views: {
"main@": {
templateUrl:
"app/angular/views/cookies-policy/cookies-policy.html"
}
},
parent: "layout",
resolve: {}
});
}
run.$inject = ["$rootScope", "$transitions"];
function run($rootScope, $transitions) {
$transitions.onStart({}, onStart);
function onStart() {
$rootScope.loading = true;
}
$transitions.onSuccess({}, onSuccess);
function onSuccess(transition) {
document.body.scrollTop = document.documentElement.scrollTop = 0;
$rootScope.currentState = transition.to().name;
$rootScope.loading = false;
}
$transitions.onError({}, onError);
function onError() {}
}
})();
Узел JS router:
module.exports = function(app) {
var api = express.Router();
var api_sunshades = express.Router();
var api_emails = express.Router();
...
// API de la web
var api_getSunshades = function(req, res) {
const sunshades = require("./data/sunshades.json");
return res.json(sunshades);
};
var api_getSunshadeByCode = function(req, res) {
var code = req.params.code;
const sunshades = require("./data/sunshades.json");
var sunshade = sunshades.find(function(sunshade) {
return sunshade.type === code;
});
if (sunshade === undefined) {
return res.status(404).json({});
} else {
return res.json(sunshade);
}
};
var api_notFound = function(req, res) {
return res.status(404).send("Rayosol Toldos API - Method not found");
};
// Asociacion de vistas a las rutas
app.get("/google0b123d2132a7917d.html", vistas_verificacion_dominio_google);
// Asociacion de metodos de la API a las rutas
api_sunshades.route("").get(api_getSunshades);
api_sunshades.route("/:code").get(api_getSunshadeByCode);
api.use("/sunshades", api_sunshades);
api.get("/*", api_notFound);
app.use("/api", api);
app.get("/sitemap.xml", function(req, res) {
res.sendFile(path.join(__dirname, "./views", "sitemap.xml"));
});
app.set("json spaces", 4);
app.get("*", function(req, res) {
return res.sendFile(path.join(__dirname, "../../public", "index.html"));
});
};
Я также заметил, что история браузера включает текущую страницу (например, cida.herokuapp.com) в качестве предыдущей страницы, как показано на рисунке.
История браузераimage
Кто-нибудь когда-либо имел эту проблему?Большое вам спасибо.