maisv
maisv
  • 发布:2016-07-18 13:25
  • 更新:2016-09-02 18:51
  • 阅读:3645

选项卡可不可以增加iframe模式

分类:MUI

选项卡可不可以增加iframe模式,现在的两种模式不能满足复杂业务在浏览器中使用。

2016-07-18 13:25 负责人:无 分享
已邀请:

最佳回复

赵梦欢

赵梦欢 - 专注前端,乐于分享!

用iframe代替多子webview形式的tabbar在浏览器的兼容处理方法:

复制代码var createIframe = function (el, opt) {  
    var elContainer = document.querySelector(el);  
    var wrapper = document.querySelector(".mui-iframe-wrapper");  
    if(!wrapper){  
        // 创建wrapper 和 iframe  
        wrapper = document.createElement('div');  
        wrapper.className = 'mui-iframe-wrapper';  
        for(var i in opt.style){  
            wrapper.style[i] = opt.style[i];  
        }  
        var iframe = document.createElement('iframe');  
        iframe.src = opt.url;  
        iframe.id = opt.id || opt.url;  
        iframe.name = opt.id;  
        wrapper.appendChild(iframe);  
        elContainer.appendChild(wrapper);  
    }else{  
        var iframe = wrapper.querySelector('iframe');  
        iframe.src = opt.url;  
        iframe.id = opt.id || opt.url;  
        iframe.name = iframe.id;  
    }  
}

调用也很简单:

复制代码//当前激活选项  
var activeTab = subpages[Index],title=document.querySelector(".mui-title");  
mui('.mui-bar-tab').on('tap', 'a', function(e) {  
    // 获取目标子页的id  
    var targetTab = this.getAttribute('href');  
    if (targetTab == activeTab) {  
        return;  
    }          
    // 更换标题  
    title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;      
    // 子页内容切换  
    if(mui.os.plus){  
        // 显示目标webview  
        plus.webview.show(targetTab);  
        // 隐藏当前webview  
        plus.webview.hide(activeTab);  
        // 更改当前活跃的选项卡  
        activeTab = targetTab;  
    }else{  
        // 创建iframe代替子页面  
        createIframe('.mui-content',{  
            url: targetTab,  
            style: {  
                top: '45px',//设置距离顶部的距离  
                bottom: '50px'//设置距离底部的距离  
            }  
        });  
    }  
})

可以参考一下这个demo:
预览地址:
https://rawgit.com/zhaomenghuan/mui-demo/master/example/tabbar-with-iframe/tab-webview-main.html
下载地址:
https://github.com/zhaomenghuan/mui-demo/

  • 红扑扑

    DEMO失效了,能否贴个源码包~谢谢

    2016-09-02 18:11

  • 赵梦欢

    回复 红扑扑:地址已经更改了一下

    2016-09-02 18:51

maisv

maisv (作者)

都没有遇到这个问题么

该问题目前已经被锁定, 无法添加新回复

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容