简体   繁体   English

如何使用浏览器后退按钮关闭叠加层?

[英]How can I use the browser back button for closing an overlay?

I read this article: JavaScript or jQuery browser back button click detector我读了这篇文章: JavaScript 或 jQuery 浏览器后退按钮点击检测器

And tried all of the examples there to use the browser back button to hide an overlay.并尝试了那里的所有示例,以使用浏览器后退按钮隐藏叠加层。

This is the best working try:这是最好的工作尝试:

 $("button").click(function() { $("#overlay").css("display", "block"); }); window.onpopstate = function() { $("#overlay").css("display", "none"); }; history.pushState({}, '');
 * { font-family: sans-serif; margin: 0; padding: 0; } html, body { width: 100%; height: 100%; } #overlay { position: fixed; top: 0; left: 0; display: none; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.8); color: white; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</div> <button>Click me</button> <div id="overlay">Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. </div>

If you click the button , and then use the browser back button, the overlay fades out.如果单击button ,然后使用浏览器后退按钮,叠加层将淡出。 That's how I expect it.这就是我所期望的。 But: It works only once, for whatever reason.但是:无论出于何种原因,它只能工作一次。 Why?为什么? How can I let it work for every case?我怎样才能让它适用于每种情况?

I would be very thankful for help!我将非常感谢您的帮助!

You need to use pushState every time the popup is opened:每次打开弹出窗口时都需要使用pushState

$("button").click(function() {
  history.pushState({}, '');
  $("#overlay").css("display", "block");
});


window.onpopstate = function() {
  $("#overlay").css("display", "none");
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM