JS当前页面和框架自动刷新的方法

最近越来越感觉JS的优越性,项目中用到关于框架页面刷新的方法,在网上搜索以后发现有许多不错的代码,但不是很齐全。于是,我索性从网络上搜集以后经过精心编排,整理了一下。^ - ^ 希望大家多多指教!
先来看一个简单的例子:
下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。
frame.html 由上(top.html)下(bottom.html)两个页面组成,代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML>
 <HEAD>
 <TITLE> frame </TITLE>
 </HEAD> 
 <frameset rows="50%,50%">
 <frame name=top  src="top.html">
 <frame name=bottom  src="bottom.html">
 </frameset>
 </HTML>

现在假设top.html (即上面的页面) 有七个button来实现对bottom.html (即下面的页面) 的刷新,可以用以下七种语句,哪个好用自己看着办了。
语句1. window.parent.frames[1].location.reload();
语句2. window.parent.frames.bottom.location.reload();
语句3. window.parent.frames["bottom"].location.reload();
语句4. window.parent.frames.item(1).location.reload();
语句5. window.parent.frames.item('bottom').location.reload();
语句6. window.parent.bottom.location.reload();
语句7. window.parent['bottom'].location.reload();

top.html 页面的代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML>
  <HEAD>
   <TITLE> top.html </TITLE>
  </HEAD>
 <BODY>
 <input type=button value="刷新1" οnclick="window.parent.frames[1].location.reload()"><br>
 <input type=button value="刷新2"οnclick="window.parent.frames.bottom.location.reload()"><br>
 <input type=but ton value="刷新3"οnclick="window.parent.frames['bottom'].location.reload()"><br>
 <input type=button value="刷新4"οnclick="window.parent.frames.item(1).location.reload()"><br>
 <input type=button value="刷新5"οnclick="window.parent.frames.item('bottom').location.reload()"><br>
 <input type=button value="刷新6" οnclick="window.parent.bottom.location.reload()"><br>
 <input type=button value="刷新7" οnclick="window.parent['bottom'].location.reload()"><br>
 </BODY>
 </HTML>

下面是bottom.html页面源代码,为了证明下方页面的确被刷新了,在装载完页面弹出一个对话框。
bottom.html 页面的代码如下:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML>
  <HEAD>
   <TITLE> bottom.html </TITLE>
  </HEAD>
 <BODY οnlοad="alert('我被加载了!')">
 <h1>This is the content in bottom.html.</h1>
 </BODY>
 </HTML>

解释一下:
1.window指代的是当前页面,例如对于此例它指的是top.html页面。
2.parent指的是当前页面的父页面,也就是包含它的框架页面。例如对于此例它指的是framedemo.html。
3.frames是window对象,是一个数组。代表着该框架内所有子页面。
4.item是方法。返回数组里面的元素。
5.如果子页面也是个框架页面,里面还是其它的子页面,那么上面的有些方法可能不行。

附:
Javascript刷新页面的几种方法:
1    history.go(0)
2    location.reload()
3    location=location
4    location.assign(location)
5    document.execCommand('Refresh')
6    window.navigate(location)
7    location.replace(location)
8    document.URL=location.href

自动刷新页面的方法:
1.页面自动刷新:把如下代码加入<head>区域中
<meta http-equiv="refresh" content="20">
其中20指每隔20秒刷新一次页面.
2.页面自动跳转:把如下代码加入<head>区域中
<meta http-equiv="refresh" content="20;url=http://www.wyxg.com">
其中20指隔20秒后跳转到http://www.wyxg.com页面
3.页面自动刷新js版
<script language="JavaScript">
function myrefresh()
{
       window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒刷新一次
</script>
ASP.NET如何输出刷新父窗口脚本语句
1.   this.response.write("<script>opener.location.reload();</script>"); 
2.   this.response.write("<script>opener.window.location.href = opener.window.location.href;</script>");  
3.   Response.Write("<script language=javascript>opener.window.navigate(''你要刷新的页.asp'');</script>")

JS刷新框架的脚本语句

//如何刷新包含该框架的页面用  
<script language=JavaScript>
   parent.location.reload();
</script>  

//子窗口刷新父窗口
<script language=JavaScript>
    self.opener.location.reload();
</script>
( 或 <a href="javascript:opener.location.reload()">刷新</a>   )

//如何刷新另一个框架的页面用  
<script language=JavaScript>
   parent.另一FrameID.location.reload();
</script>

如果想关闭窗口时刷新或者想开窗时刷新的话,在<body>中调用以下语句即可。

<body οnlοad="opener.location.reload()"> 开窗时刷新
<body onUnload="opener.location.reload()"> 关闭时刷新

<script language="javascript">
window.opener.document.location.reload()
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue是一种流行的JavaScript框架,用于构建交互式的前端应用程序。Vue的一个特点是可以实现无刷新页面状态保留的功能,即刷新页面后保留当前页面状态。以下是一种常用的实现方法: 1. 使用Vue的路由机制:Vue提供了vue-router插件,可以用于管理前端路由。在vue-router中,可以定义路由和对应的组件,并通过路由导航切换不同的组件。刷新页面后,由于路由信息仍然保存在浏览器地址栏中,可以通过重新加载对应的路由和组件来保留当前页面状态。 2. 使用浏览器的本地存储:Vue可以通过浏览器的本地存储机制(如localStorage或sessionStorage)将当前页面的数据存储在浏览器中。当页面刷新时,可以从本地存储中获取数据并重新渲染页面,从而保留当前页面状态。 3. 使用Vue的全局状态管理:Vue提供了Vuex插件,用于管理全局的状态。通过将页面状态存储在Vuex的state中,在页面刷新后再次加载时,可以从Vuex中获取保存的状态数据,并在组件中重新渲染页面。 需要注意的是,以上方法都是基于前端的实现,即刷新页面后重新加载前端资源并重新渲染页面。如果涉及到后端数据的状态保留,还需要通过后端的持久化或缓存机制来实现。 ### 回答2: 在Vue中刷新页面并保留当前页面状态,可以通过以下步骤实现: 1. 使用Vue Router来进行路由管理,确保每个页面都有一个对应的路由路径。 2. 在Vue组件中,使用Vue Router的导航守卫(Navigation Guards)中的`beforeRouteLeave`钩子函数。通过在该函数中存储当前页面的状态数据。 例如,在`beforeRouteLeave`函数中,可以使用`this.$store.state`来获取并存储当前组件的状态数据。 3. 在进行页面刷新或路由跳转时,可以使用`window.localStorage`或`sessionStorage`对象将当前页面的状态数据存储到浏览器本地存储中。 例如,在`beforeRouteLeave`函数中,可以使用`window.localStorage.setItem('pageState', JSON.stringify(this.$store.state))`来将当前页面状态数据存储到localStorage中。 4. 在页面加载完成时,可以使用Vue Router的导航守卫中的`beforeRouteEnter`钩子函数来获取并还原之前保存的页面状态数据。 例如,在`beforeRouteEnter`函数中,可以使用`this.$store.commit('updateState', JSON.parse(window.localStorage.getItem('pageState')))`来将之前存储的状态数据重新赋值给当前组件的状态。 通过以上步骤,即可实现在Vue中刷新页面保留当前页面状态的效果。当页面刷新或路由跳转时,会将当前页面的状态数据存储到浏览器本地存储中,再次加载页面时则可以将之前保存的状态数据还原给组件。这样就能够保留页面的状态并避免数据丢失。 ### 回答3: 在Vue中,如果要实现刷新页面后保留当前页面状态,可以借助浏览器的本地存储技术进行操作。 一种常见的做法是在Vue组件的created或mounted钩子函数中,通过localStorage或sessionStorage将数据存储在浏览器中。可以将需要保留的数据进行序列化处理,然后使用setItem方法将其存储到localStorage或sessionStorage中。 例如,在需要保留状态的组件中,可以写入以下代码: ```javascript export default { created() { // 获取存储在localStorage中的状态数据 const stateData = localStorage.getItem('stateData'); // 判断是否存在状态数据 if (stateData) { // 使用JSON.parse方法将序列化的状态数据还原成对象 const state = JSON.parse(stateData); // 将状态数据重新赋值给组件内的数据 this.someData = state.someData; // 其他需要保留的数据字段类似地进行赋值 } }, beforeDestroy() { // 在组件销毁前,将当前的状态数据存储到localStorage中 localStorage.setItem('stateData', JSON.stringify({ someData: this.someData, // 其他需要保留的数据字段类似地存储 })); } } ``` 通过以上代码,在组件创建时,会自动从localStorage中获取之前存储的状态数据并重新赋值给组件内的数据字段。而在组件销毁前,会将当前状态数据存储到localStorage中。 这样在刷新页面后,通过获取localStorage中的数据,即可将之前的状态数据重新赋值给组件,从而达到刷新页面保留当前页面状态的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值