cookie + js动态修改iframe 父窗口的链接参数

取得

由于最近自己做的项目中采用了目前较为流行的经典左右结构,(类似抓虾网),右边窗口采用的是Iframe结构,

系统中科目部分的url是两级的,类似于"localhost:3000/subjects/1/questons",左边窗口中也包含了这个动态的subject_id

切换科目是,由于在iframe里面的操作,左边菜单的sunject_id被没有修改,导致切换科目失效

解决方案:

1、首先在切换科目的action时保存切换的科目的id到cookie中,这里运用rails自带的cookies[:xx] = xxx

def select
    cookies.delete :sid
    cookies[:sid] = params[:id]
    session[:sid] = params[:id]
    ref = request.env["HTTP_REFERER"]
    ref = ref.gsub(/\/subjects\/\d+\//, "/subjects/#{session[:sid]}/")
    redirect_back_or_default(ref)
  end

 2、再通过js方法refrsh_like()调用cookie值来刷新链接中的subject_id

<li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/questions',this)" title="题目列表">题目列表</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/questions/new',this)" title="新建题目">新建题目</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/questions/new_tiku',this)" title="新建综合题">新建综合题</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/questions/import',this)" title="导入题目">导入题目</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/questions/export',this)" title="导出题目">导出题目</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/duplicate_questions',this)" title="探测相似题目">探测相似题目</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/duplicate_questions/miss_answer',this)" title="探测无答案题目">探测无答案题目</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/accuracy_questions',this)" title="题目统计">题目统计</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/accuracy_questions/keywords',this)" title="关键字统计">关键字统计</a></li>
                    <li><a target="mainframe" href="" οnclick="refrsh_link('/subjects/','/accuracy_questions/points',this)" title="知识点统计">知识点统计</a></li>

 3、js方法

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function refrsh_link(before,behind,o){
    var id=readCookie('sid');
    var href=before + id + behind;
    o.href = href;
}

 通过读cookie中的来取得最新的subject_id。然后在用户退出系统的时候cookies.delete :sid清除cookie

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值