很多WEB应用管理后台都是基于多TAB页来实现的,页面布局类似下图所示:
多TAB页通常就两种实现方式:
虽说基于iframe容器模式实现相对简单,但是实际项目应用中,我们还是需要注意下述几个问题。
在个别浏览器(比如早期版本的chrome浏览器),iframe的height设置100%,并不会将高度拉伸到到iframe父容器的高度,因此需要在生成TAB页的时候,用js代码显性设置iframe高度,参考代码如下:
//
function iframeAutoHeight(self){
var agent = navigator.userAgent.toLowerCase();
if(agent.indexOf("chrome")>-1){ //chrome
$(self).height($(self).parent().height());
}
}
iframe切换src时,比如原来加载的是a.html,可能要切换成b.html,无非2种实现方式:
方式1,在IE浏览器下会有内存泄漏,因此建议使用方式2来实现iframe页面切换,tab页关闭的时候,务必将iframe移除掉。
关于iframe内存泄漏,可以参考:https://www.jb51.net/article/60803.htm
var $iframe = $(".tab-pane.active iframe");
if ($iframe.length > 0 ) {
// 页面存在toamsg_last函数的话,调用toamsg_last函数
if ($iframe[0].contentWindow && $iframe[0].contentWindow.toamsg_last) {
$iframe[0].contentWindow.toamsg_last();
}
}
// 父页面js 方法
function sayHello(msg) {
console.log("Hello, " + msg);
}
// iframe 页面 调用sayHello
if (window.parent && window.parent.sayHello) {
window.parent.sayHello('老马');
}