1. 程式人生 > >基於iframe父子頁面傳值的方法。

基於iframe父子頁面傳值的方法。

this laydate clas tex pan 部分 信息 參數 iframe

之前項目中用layer.js作為彈窗的框架,發現layer.js中大部分彈窗都是通過iframe模擬的。為此,在項目中遇到了不少坑。印象最深的就是父子頁面傳值的問題。後面經過一段時間的研究。總結出以下幾種方法:

一、在子頁面的js中直接使用parent獲取父級頁面中的對象方法。如:

$(document).ready(function(){
        $("#people_add_cardActiveTime").text(laydate.now(0, ‘YYYY-MM-DD 00:00:00‘));
        $("#people_add_cardEndTime").text(laydate.now(0, ‘YYYY-MM-DD hh:mm:ss‘));
        $.selectTime(
‘people_add_cardActiveTime‘); $.selectTime(‘people_add_cardEndTime‘); if(parent.people_manager.editStus ==1){ var starTime = parent.people_manager.starTime; var endTime = parent.people_manager.endTime; $("#people_add_cardActiveTime").val(starTime) $(
"#people_add_cardEndTime").val(endTime) }else{ $("#people_add_cardActiveTime").val("") $("#people_add_cardEndTime").val("") } })
//要註意的是,在parent過去之後,為了方便,我們一般是獲取其全局對象下的方法或對象。

二、通過地址傳入參數,該方法稍顯復雜;首先要在父頁面將參數添加到子頁面鏈接後面,然後在子頁面接收的時候,獲取到頁面鏈接解析後面傳入的參數。

三、直接在父頁面通過find方法查找子頁面元素,然後賦值:

index = layer.open({
        id: "pop_div_fingerEdit",
        title: "指紋信息修改",
        type: 2,
        area: [‘400px‘, ‘300px‘],
        content: "./cardManager/fingerEdit.html",
        success: function (layero, index) {
            var body = layer.getChildFrame("#pop_div_fingerEdit", index);
            $peopleid = $peopleid? $peopleid : "無"
            body.contents().find("#peopleID").val($peopleid);
            body.contents().find("#fingerID").val($id);
            var obj = body.contents().find("#stus").find("option")//.attr("selected","selected");
            $(obj).each(function(i,v){
                if($($(obj)[i]).attr("value")==stu){
                    $(this).attr("selected","selected")
                }
            })
        }
    })

$(document).ready(function(){
        $("#people_add_cardActiveTime").text(laydate.now(0, ‘YYYY-MM-DD 00:00:00‘));
        $("#people_add_cardEndTime").text(laydate.now(0, ‘YYYY-MM-DD hh:mm:ss‘));
        $.selectTime(‘people_add_cardActiveTime‘);
        $.selectTime(‘people_add_cardEndTime‘);
        if(parent.people_manager.editStus ==1){
            var starTime = parent.people_manager.starTime;
            var endTime = parent.people_manager.endTime;
            $("#people_add_cardActiveTime").val(starTime)
            $("#people_add_cardEndTime").val(endTime)
        }else{
            $("#people_add_cardActiveTime").val("")
            $("#people_add_cardEndTime").val("")
        }
    })

基於iframe父子頁面傳值的方法。