layer.open打开的新页面返回上一页面时,禁止刷新上一页面的内容
时间: 2023-11-02 19:31:56 浏览: 174
防止页面二次刷新
当使用 `layer.open` 打开新页面时,如果不想刷新上一页面的内容,可以在新页面中使用 `history.pushState` 方法或 sessionStorage,与 iframe 中类似。
方法一:使用 `history.pushState` 方法
在新页面中添加以下代码:
```javascript
history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
history.pushState(null, null, document.URL);
});
```
上述代码会在新页面中执行,它会在浏览器历史记录中添加一个新的状态,并且监听 `popstate` 事件,当用户点击浏览器的后退按钮时,再次调用 `pushState()` 方法,从而保持历史记录不变。这样就可以实现在新页面中返回上一页面时不刷新上一页面的效果。
方法二:使用 sessionStorage
在新页面中添加以下代码:
```javascript
sessionStorage.setItem('noRefresh', '1');
```
在父页面中添加以下代码:
```javascript
window.addEventListener('popstate', function () {
var noRefresh = sessionStorage.getItem('noRefresh');
if (noRefresh === '1') {
sessionStorage.removeItem('noRefresh');
return;
}
location.reload();
});
```
上述代码会在新页面中设置 sessionStorage,当返回上一页面时,父页面会检查 sessionStorage 中是否存在标识符,如果存在则不刷新页面,否则刷新页面。这样就可以实现在新页面中返回上一页面时不刷新上一页面的效果。
阅读全文