关于ajax支持浏览器后退前进的做法

本文介绍了一种使用隐藏iframe和JavaScript实现Ajax应用中浏览器前进后退按钮功能的方法,使得用户可以在Ajax应用中使用这些按钮来浏览不同的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ajax七宗罪第五宗里面,作者讽刺Ajax需要一个“没有back和history的浏览器”。很讽刺吗?只是作者这么想罢了。至少要让Ajax应用支持Forward和Back,并不需要什么了不起的技术,我们也不需要这样的浏览器来改变用户习惯,事实上我们完全能做到让Forward和Back更酷。 

这是一个示范页面: 
index.htm  
<HTML> 
<BODY> 

<textarea cols=80 rows=30 id="textarea1" onkeypress="checkSave()">请在此处输入</textarea> 

<iframe name=historyFrame width=0 height=0 src="hiddenpage.htm?0#0"></iframe> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
historyFrame.history.go(-999) 
var t = document.getElementById("textarea1"); 
var maxHistory=100; 
var historyList=[]; 
var historyOffset=0; 
var timer; 
function checkSave(){ 
    if(timer)clearTimeout(timer); 
    timer=setTimeout(saveHistory,500); 

function saveHistory(){ 
    if(t.value==t.oldValue) return; 
    historyList[historyOffset]=t.oldValue; 
    historyOffset++; 
    historyList.length=historyOffset 
    t.oldValue=t.value; 
    var url = historyFrame.location.protocol+"//"+historyFrame.location.pathname+"?"; 
    historyFrame.location=url+(historyOffset%2)+"#"+historyOffset; 
    t.focus(); 

function gotoHistory(n){ 
    if(n<historyOffset){ 
        historyList[historyOffset]=t.value; 
    }else if(n>historyOffset){ 
    }else return; 
    historyOffset=n; 
    t.value=historyList[historyOffset]; 
    t.focus(); 


window.onload=function(){ 
    t.oldValue=t.value; 


//--> 
</SCRIPT> 
</BODY> 
</HTML> 
需要一个简单的页面放在同一目录下面: 
hiddenpage.htm 
<SCRIPT>window.onload=function(){parent.gotoHistory(location.hash.substr(1))}</SCRIPT> 
好了,打开index页面,在文本区域里面做一些输入,然后试试IE的前进和后退按钮能提供多酷的功能。 

这个方法由emu的好朋友twinsen首先提出来,以后我们就叫它twinsen方法吧。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值