iframe页面调用父级页面中的函数
parent.dofunction();
contentWindow 实例
iframe = document.getElementById("frame");
iframe.contentWindow.location = "http://mozilla.org";
iframe.contentWindow.history.back();
个人应用遇到的问题:
下面的方法实现如过标签未打开则打开标签,如果打开了则刷新标签页面。TabPanel 中包含iframe,在对已经打开的标签实现页面刷新时,开始使用window.parent.frames['frameid']获取iframe,再使用var href = iframe.location.href得到iframe中的src属性,在chrome中能够正常使用,但在firefox中出现问题,后来查了很多资料说可以使用iframe.location,但是使用了过后,firefox出现TypeError: href is undefined,我给他加上''将其转为字符,后来不报错了,但是出现执行iframe.location=url 时不能刷新页面,化了很长时间找到了解决办法,办法就是使用 iframe.contentWindow.location = url 成功解决问题。
function addTab(url,name,menuid,pathCh){
var url = 'scs/'+url;
var icon = "tab_blank.png ";
var id = "tab_id_" + menuid;
if (url == "#" || url == "") {
return;
} else {
var index = url.indexOf(".do");
if (index != -1)
url = url + "&menuid4Log=" + menuid;
var n = window.parent.mainTabs.getComponent(id);
if (!n) {
var endIeStatus = document.getElementById("endIeStatus");
if (document.createEvent) {
var ev = document.createEvent("HTMLEvents");
ev.initEvent("click", false, true);
} else endIeStatus.click();
n = window.parent.mainTabs.add( {
id : id,
title : "<img align='top' class='IEPNG' src='./resource/image/ext/"+ icon + "'/>" + name,
closable : true,
layout : 'fit',
listeners : {
activate : function() {window.parent.Ext.getCmp('centerPanel').setTitle(pathCh);}
},
html : '<iframe id="ifrmae_id_' + menuid + '" scrolling="auto" frameborder="0" width="100%" height="100%" src=' + url + '></iframe>'
//如果功能页面使用中心区域阴影加载模式则使用下面的代码unmaskCenterPanel();页面加载完毕后取消阴影
//html:'<iframe scrolling="auto" frameborder="0" onload="unmaskCenterPanel()" width="100%" height="100%" src='+url+'></iframe>'
});
}else{
var iframe = window.parent.frames["ifrmae_id_" + menuid];
var href = iframe.location+'';
if (href.indexOf(url) == -1) {
url ='../'+url;
}
if(navigator.userAgent.indexOf('Firefox') >= 0){
iframe.contentWindow.location= url;//兼容firefox不兼容chrome
}else{
iframe.location = url;
} }
window.parent.Ext.getCmp('centerPanel').doLayout();
window.parent.mainTabs.setActiveTab(n); }