iframe使用location跳转页面的问题
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 成功解决问题。
1 function addTab(url,name,menuid,pathCh){ 2 var url = 'scs/'+url; 3 var icon = "tab_blank.png "; 4 var id = "tab_id_" + menuid; 5 if (url == "#" || url == "") { 6 return; 7 } else { 8 var index = url.indexOf(".do"); 9 if (index != -1) 10 url = url + "&menuid4Log=" + menuid; 11 var n = window.parent.mainTabs.getComponent(id); 12 if (!n) { 13 var endIeStatus = document.getElementById("endIeStatus"); 14 if (document.createEvent) { 15 var ev = document.createEvent("HTMLEvents"); 16 ev.initEvent("click", false, true); 17 } else endIeStatus.click(); 18 n = window.parent.mainTabs.add( { 19 id : id, 20 title : "<img align='top' class='IEPNG' src='./resource/image/ext/"+ icon + "'/>" + name, 21 closable : true, 22 layout : 'fit', 23 listeners : { 24 activate : function() {window.parent.Ext.getCmp('centerPanel').setTitle(pathCh);} 25 }, 26 html : '<iframe id="ifrmae_id_' + menuid + '" scrolling="auto" frameborder="0" width="100%" height="100%" src=' + url + '></iframe>' 27 //如果功能页面使用中心区域阴影加载模式则使用下面的代码unmaskCenterPanel();页面加载完毕后取消阴影 28 //html:'<iframe scrolling="auto" frameborder="0" onload="unmaskCenterPanel()" width="100%" height="100%" src='+url+'></iframe>' 29 }); 30 }else{ 31 var iframe = window.parent.frames["ifrmae_id_" + menuid]; 32 var href = iframe.location+''; 33 if (href.indexOf(url) == -1) { 34 url ='../'+url; 35 } 36 if(navigator.userAgent.indexOf('Firefox') >= 0){ 37 iframe.contentWindow.location= url;//兼容firefox不兼容chrome 38 }else{ 39 iframe.location = url; 40 } 41 42 } 43 window.parent.Ext.getCmp('centerPanel').doLayout(); 44 window.parent.mainTabs.setActiveTab(n); 45 46 }