javascript跨框架函數(shù)相互調(diào)用

字號(hào):


    javascript跨框架函數(shù)相互調(diào)用,具體代碼如下:
    var idName = "FrameCall";
    var idNameAll= "#"+idName;
    var ie = !-[1,];//是否ie
    return{
    apiOpen:function(){
    var html = '<input id="FrameCall" type="hidden" action="1" value="1" onclick="FrameCall.api()" />';
    $(html).prependTo('body');
    },
    //其他窗口調(diào)用該窗口函數(shù),調(diào)用另一個(gè)frame的方法
    api:function(){
    var action = $(idNameAll).attr('action');
    var value=$(idNameAll).attr('value');
    var fun=action+'('+value+');';//拼裝執(zhí)行語(yǔ)句,字符串轉(zhuǎn)換到代碼
    eval(fun);
    },
    //該窗口調(diào)用父窗口的子窗口api,調(diào)用iframe框架的js函數(shù).封裝控制器。
    doFunction:function(iframe,action,value){
    var obj = window.parent.frames[iframe].document;
    obj=obj.getElementById(idName);
    $(obj).attr("action",action);
    $(obj).attr("value",value);
    obj.click();
    },
    //該窗口調(diào)用父窗口的子窗口api,調(diào)用iframe框架的js函數(shù).封裝控制器。
    doTopFunction:function(iframe,action,value){
    var obj = window.top.frames[iframe].document;
    obj=obj.getElementById(idName);
    $(obj).attr("action",action);
    $(obj).attr("value",value);
    obj.click();
    },
    //該窗口調(diào)用父窗口的api
    fatherFunction:function(action,value){
    if (ie){//獲取兄弟frame的dom樹(shù)
    var obj=window.parent.document;//IE
    }else{
    var obj=window.parent.document;//chrome safari firefox...
    }
    obj=obj.getElementById(idName);
    $(obj).attr("action",action);
    $(obj).attr("value",value);
    obj.click();
    },
    //___自定義通用方法,可在頁(yè)面定義更多提供給接口使用的api。
    goUrl:function(url){
    window.location.href=url;
    },
    goRefresh:function(){
    window.location.reload();
    }
    }
    })();
    $(document).ready(function() {
    FrameCall.apiOpen();
    });
    /*
    * iframe之間函數(shù)調(diào)用
    *
    * main frame中每個(gè)frame需要name和id,以便兼容多瀏覽器
    * 如果需要提供給其他frame調(diào)用,則需要在body中加入
    * <input id="FrameCall" type='hidden' action='' value='' onclick='FrameCall.api()'/>
    * 調(diào)用例子:Frame.doFunction('main','goUrl','"'+url+'"');該frame調(diào)用id為main的兄弟frame的goUrl方法,參數(shù)為后面的
    * 參數(shù)為字符串時(shí)需要加引號(hào),否則傳過(guò)去會(huì)被理解成一個(gè)未定義變量
    */