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樹
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è)未定義變量
*/
更多信息請(qǐng)查看IT技術(shù)專欄