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" onclick="window.parent.frames[1].location.reload()"><br>
<input type=button value="刷新2" onclick="window.parent.frames.bottom.location.reload()"><br>
<input type=button value="刷新3" onclick="window.parent.frames['bottom'].location.reload()"><br>
<input type=button value="刷新4" onclick="window.parent.frames.item(1).location.reload()"><br>
<input type=button value="刷新5" onclick="window.parent.frames.item('bottom').location.reload()"><br>
<input type=button value="刷新6" onclick="window.parent.bottom.location.reload()"><br>
<input type=button value="刷新7" onclick="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 onload="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 onload="opener.location.reload()"> 开 窗时刷新
<body onUnload="opener.location.reload()"> 关 闭时刷新
<script language="javascript">
window.opener.document.location.reload()
</script>

利用 javascript实现web页面刷新方法 - 总结

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=//sjolzy.cn">
其中20指隔20秒后跳转到http://www.sjolzy.cn页面

3. 页面自动刷新js
<script language="JavaScript">
function myrefresh()
{
window.location.reload();
}
setTimeout('myrefresh()',1000); // 指定1秒刷新一次
</script>

ASP.NET 如何输出刷新父窗口脚本句" title="句" >
1.   this.response" title="response" >response.write("<script>opener.location.reload();</script>"); 

2.   this.response" title="response" >response.write("<script>opener.window.location.href = opener.window.location.href;</script>");  

3.   Response.Write("<script language=javascript& gt;opener.window.navigate(''你要刷新的页.asp'');</script>")


JS 刷新框架脚本句" title="句" >

// 如何刷新包含框架页面用 
<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.otherFrameID.location.reload();
</script>

如果想关闭窗口时刷新或者想开窗时刷新的话,在<body>中调用以下句" title="句" >句即可。
<body onload="opener.location.reload()"& gt; 开窗时刷新
<body onUnload="opener.location.reload()"& gt; 关闭时刷新
<script language="javascript">
window.opener.document.location.reload()
</script>

url伪静态和Gzip同时开启造成冲突的原因和解决办法

现象:

    单纯开启url伪静态,不开启gzip,网站正常;
    单纯开启gzip,不开启url伪静态,网站正常;
    同时开启url伪静态和gzip,网站无法正常显示,有时显示不出内容,刷新后自动refresh等等问题....

解决办法:

1、修改服务器设置法:
到服务器里,从php.ini找出:zlib.output_compression 这条,把
zlib.output_compression = On 改成 zlib.output_compression = Off
存盘后重启apache或IIS就可以了。

2、修改网站程序法:
使用虚拟主机,无法修改 php.ini 的,可以暂时这样修改,在网站的公共文件或初始化文件中加入这句:

    ! ini_get('zlib.output_compression') ? ob_start('ob_gzhandler') : ob_start();

现象解说:

开启 zlib.output_compression 相当于给每个PHP程序开头加上了ob_start("ob_gzhandler");这条语句。虽然 zlib.output_compression和ob_gzhandler还是有区别的。zlib.output_compression是和PHP脚 本解析程序并行的一个线程,当PHP输入时,这边读入,压缩,而已经压缩好的文档达到一定数量(默认是4k),它就向浏览器发送数据。而 ob_gzhandler则是在PHP脚本执行完所有代码才把缓存好的输出文件进行压缩并传输给浏览器,所以相对慢一点,但原理是相同的。

而在后台开启 gzip 功能后,会不加判断地强制运行头部的 ob_start("ob_gzhandler") 语句,这样相当于程序同时运行了两条 ob_start("ob_gzhandler") 语句,造成无法正常执行并显示出页面内容。
  因此,建议正常情况下php.ini里zlib.output_compression设置为 Off 状态,毕竟编程人员大多数还是会出现不加判断地添加 ob_start("ob_gzhandler") 语句的情况。

MySQL 编码机制

 

一般在MYSQL使用中文查询 都是用 set NAMES character

character_set_client ,这是用户告诉MySQL查询是用的什么字符集。 

character_set_connection ,MySQL接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集。 

character_set_results , MySQL将存储的数据转换成character_set_results中设定的字符集发送给用户。 

 

DISCUZ并没有使用set NAMES character 

SET NAMES 'x'语句与这三个语句等价: 

mysql> SET character_set_client = x; mysql> SET character_set_results = x; mysql> SET character_set_connection = x; 

 

而DISCUZ里面是 

@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link); 

 

SET character_set_client = binary;使用二进制字符集查询 

此三处的字符设定很大程度上会解决乱码问题,那么着三个设定具体有什么作用呢? 

character_set_client指定的是Sql语句的编码,如果设置为 binary,mysql就当二进制来处理,character_set_connection指定了mysql 用来运行sql语句的时候使用的编码,也就是说,程序发送给MySQL 的SQL语句,会首先被MySQL从character_set_client指定的编码转换到character_set_connection指定的编码,如果character_set_clien指定的是binary,则MySQL就会把SQL语句按照character_set_connection指定的编码解释执行. 

当执行SQL语句的过程中,比如向数据库中插入字段的时候,字段也有编码设置,如果字段的编码设置和character_set_connection指定的不同,则MySQL 会把插入的数据转换成字段设定的编码。SQL语句中的条件判断和SQL插入语句的执行过程类似. 

当SQL执行完毕像客户端返回数据的时候,会把数据从字段指定的编码转换为character_set_results指定的编码,如果character_set_results=NULL 则不做任何转换动作,(注意这里设置为NULL不等于没有设置,没有设置的时候MySQL会继承全局设置), 

工作中比较有用的就是利用MySQL进行转码、不同编码的数据库之间共用数据。