thinkphp5+bootstrap+ajax环境处理iframe刷新跳回首页(Chrome)
原创
©著作权归作者所有:来自51CTO博客作者钰娘娘ynn的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.每次点击时通过ajax调用控制器,控制器修改当前页面状态保存在session
js调用控制器:
type: 'POST',
dataType:'json',
data:{page:id},
url : '/xx/xx/save',
success:function(data){
}
2.控制器保存session:
public function save(){
if($_POST['page']){
$top = $_POST['page'];
session("page",$page);
return json_encode([
"code":1,
"msg":保存成功,
]);
}
return json_encode([
"code":2,
"msg":保存失败,
]);
}
3.通过$this->assign方式将页面状态传入网页
$this->assign(‘page’, session(‘page’)==0?1:session(‘page’));
4.在网页通过volist和page进行处理
{volist class="xx" id="x"}
{if $x==$page}
//进行选中选项卡的特殊处理
{/if}
{/volist}
iframe:
"{$date[$page]}" id="contentframe" name="main" width="100%"
height="100%" scrolling="no" frameborder="no"></iframe>
5.进行刷新和关闭浏览器识别,当关闭浏览器时还原session值【否则关闭重新打开网页时可能不在首页】。
window.onbeforeunload = function(event){
if(isClose()){
$.ajax({
type: 'POST',
dataType:'json',
data:{top:1},
url : '/xx/xx/xx',
success:function(data){
}
});
}
};
//是否是关闭浏览器,不进行此项判断浏览器会将二次刷新默认为关闭进行处理
function isClose(){
function isClose(){
if (currentKeyCode == 116)
{
return false;
}
else if ((event.altKey)&&(currentKeyCode == 115))
{
return true;
}else if ((event.clientX > 0)&&(event.clientX < document.body.clientWidth)){
return false;
}else{
return true;
}
}
}