昨天,公司内部组织人员诊断一个网站,有位新同事发现网站的静态页面后边有参数,就直接说这是伪静态,当然,伪静态不是这个概念,这只是一般的静态页面传值而已。很多刚入行的人都认为要想传递值,需要ASP/.NET/PHP/JSP等脚本语言才能实现,其实不然,静态页面同样可以传递值,这里举三种方式:
这两窗口之间存在着关系.父窗口parent.htm打开子窗口son.htm
子窗口可以通过window.opener指向父窗口.这样可以访问父窗口的对象.
优点:取值方便.只要window.opener指向父窗口,就可以访问所有对象.
不仅可以访问值,还可以访问父窗口的方法.值长度无限制.
缺点:两窗口要存在着关系.就是利用window.open打开的窗口.不能跨域.
Post.htm
<input type=textname=maintext>
<input type=buttonvalue="Open">
Read.htm
<script language="javascript">
//window.open打开的窗口.
//利用opener指向父窗口.
var parentText = window.opener.document.all.maintext.value;
alert(parentText);
</script>
利用Cookie.
Cookie是浏览器存储少量命名数据.
它与某个特定的网页或网站关联在一起.
Cookie用来给浏览器提供内存,
以便脚本和服务器程序可以在一个页面中使用另一个页面的输入数据.
优点:可以在同源内的任意网页内访问.生命期可以设置.
缺点:值长度有限制.
Post.htm
<input type="text"name="txt1">
<input type="button"onclick="setCookie('baobao',document.all.txt1.value)"value="Post">
<script language="javascript" >
function setCookie(name,value)
{
var Days =30; //此 cookie 将被保存 30 天
var exp =new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" +exp.toGMTString();
location.href = "Read.htm"; //接收页面.
}
</script>
Read.htm
<script language="javascript">
function getCookie(name)
{
var arr =document.cookie.match(new RegExp("(^|)"+name+"=([^;]*)(;|$)"));
if(arr!=null) return unescape(arr[2]); return null;
}
alert(getCookie("baobao"));
</script>
URL篇
能过URL进行传值.把要传递的信息接在URL上.
优点:取值方便.可以跨域.
缺点:值长度有限制.
Post.htm
<input type="text"name="username">
<input type="text" name="sex">
<input type="button"value="Post">
<script language="javascript" >
function Post()
{
//单个值Read.htm?username=baobao;
//多全值Read.htm?username=baobao&sex=male;
url ="Read.htm?username="+escape(document.all.username.value);
url +="&sex=" + escape(document.all.sex.value);
location.href=url;
}
</script>
Read.htm
<script language="javascript">
var url=location.search;
var Request = new Object();
if(url.indexOf("?")!=-1)
{
var str =url.substr(1) //去掉?号
strs =str.split("&");
for(vari=0;i<strs.length;i++)
{
Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
alert(Request["username"])
alert(Request["sex"])
</script>
|