I've a simple web-application, which consists of 3 simple pages
- a.html
- b.html
- c.html
<!-- a.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="b.html">b.html</a>
</body>
</html>
<!-- b.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="a.html">a.html</a>
<br />
<a href="c.html">c.html</a>
</body>
</html>
<!-- c.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="b.html">b.html</a>
</body>
</html>
As can be seen from the above code, a.html
has a link to b.html
, b.html
has a link to both a.html
& c.html
and finally, c.html
has a link to b.html
.
All of the pages will be hosted on the same domain, and I want a very simple thing. All I want is to execute a callback whenever browser's back/forward button is pressed (specifically before navigating to the new page), and in the callback I want the page to which we'll be navigating. And I don't want to update the browser's history while achieving the above (I don't want to ruin the user's experience, updating browser-history will result in unexpected navigation for the user)
The solutions that I tried:
performance.navigation.type
performance.navigation.type == 2 can be used, but it doesn't distinguishes between back and forward button. So it's not of much use for me. Is there any way to distinguish the back and forward button press here?- I don't want to distort
this.window.history
so that I can get a callback ononpopstate
(refer this). Distorting the windows history means ruining the user-experience. Can this be done without distorting the windows history? - I know that using
window.history
object, I can't find the URL to which the forward/back button will navigate to. (This is because of security). But provided that all of my pages are on the same domain, can I somehow get the url to which fwd/back button will be taking me to. I'm mostly concerned aboutb.html
. While I'm onb.html
the forward/back button can take me to eithera.html
orc.html
, how do I detect this before actual navigation happens, so that I can get a callback at this point and execute it. - I tried using JQuery-Mobile but was stuck and posted it as a separate question. Though I'm not sure how JQuery Mobile achieves it and if it will distort the browser's history.
- I tried using React-routers, but they are more suited for a single-page-application, and so not much help from there also. Can this be done using any react-concepts?