杨婆婆管家家
杨婆婆管家家
  • 发布:2017-07-23 14:21
  • 更新:2017-07-25 11:00
  • 阅读:1677

预加载页面创建失败,导致打开失败?

分类:MUI

我先用

mui.init({   
                preloadPages: [   
                    {  
                        url: 'xq_yy.html',  
                        id: 'xq_yy',  
                        styles: {}, //窗口参数   
                        extras: {}, //自定义扩展参数  
                        subpages: [{}, {}] //预加载页面的子页面   
                    }  
                ]  
            });

创建一个预加载页面,xq_yy.html这个页面我后台已经建立好了,我用默认的打开可以打开这个页面

然后用

mui.plusReady(function() {  
                mui(".mui-table-view").on("tap", "li", function() {  
                    mui.openWindow({  
                        //url: 'xq_yy.html',  
                        id: 'xq_yy',  
                        styles: {  
                            top: '0px', //新页面顶部位置  
                            bottom: '0px', //新页面底部位置  
                        },  
                        extras: {},  
                        createNew: false, //是否重复创建同样id的webview,默认为false:不重复创建,直接显示  
                        show: {  
                            autoShow: true, //页面loaded事件发生后自动显示,默认为true  
                            aniShow: 'slide-in-right', //页面显示动画,默认为”slide-in-right“;  
                            duration: 200, //页面动画持续时间,Android平台默认100毫秒,iOS平台默认200毫秒;  
                            event: 'titleUpdate', //页面显示时机,默认为titleUpdate事件时显示  
                            extras: {} //窗口动画是否使用图片加速  
                        }  
                    })  

                    mui.toast("asdfasd");  
                });  
            })

去打开之前的预加载页面xq_yy.html,但是程序运营的时候提示错误
[ERROR] : Error: webview[xq_yy] does not exist
file name:js/mui.min.js
line no:6

提示错误如上,它说xq_yy这个id的页面出存在.
我想是我的预加载页面没有创建成果
不知道如何结果,请求帮助

2017-07-23 14:21 负责人:无 分享
已邀请:
n***@gmail.com

n***@gmail.com

首先预加载的url 路径是不是对的,init之后你先通过plus.webview.getWebviewById('xq_yy')打印一下是否存在当前webview,我通过你上面的代码测试是没有问题的,如果还不行,建议发完整的能复现的demo附件上来帮你看看

  • 杨婆婆管家家 (作者)

    我用mui.openWindow({}),命令可以打开窗口.

    我搜索了一下其他网友的相关问题,可能是没有写在mui.plusReady(function() {})这个里面.plus还没有加载新创建预加载页面可能是事失败的.

    我准备晚上回家测试一下.如果不行我就发完整代码.

    不知道我分析的有没有这种可能,感谢您的帮助.

    2017-07-24 11:46

杨婆婆管家家

杨婆婆管家家 (作者) - 80后

<!doctype html>  
<html>  
    <head>  
        <meta charset="UTF-8">  
        <title></title>  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
        <link href="css/mui.min.css" rel="stylesheet" />  
    </head>  

    <body>  
        <div class="mui-content">  
            <div id="dasdf">  
                <img src="http://wx2.sinaimg.cn/mw690/6d272385gy1fhtq8j9arfj22io1w0e82.jpg" style="width: 100%; height: 100px;" />  
            </div>  
            <ul class="mui-table-view">  
                <li class="mui-table-view-cell">  
                    <a class="mui-navigate-right">  
                        Item 1  
                    </a>  
                </li>  
                <li class="mui-table-view-cell">  
                    <a class="mui-navigate-right">  
                        Item 2  
                    </a>  
                </li>  
                <li class="mui-table-view-cell">  
                    <a class="mui-navigate-right">  
                        Item 3  
                    </a>  
                </li>  
            </ul>  
        </div>  
        <script src="js/mui.min.js"></script>  
        <script type="text/javascript">  
            mui.init();  
            mui.init({  
                preloadPages: [{  
                    url: 'xq_yy.html',  
                    id: 'xq_yy',  
                    styles: {}, //窗口参数   
                    extras: {}, //自定义扩展参数  
                    subpages: [{}, {}] //预加载页面的子页面   
                }]  
            });  
            console.log(plus.webview.getWebviewById('xq_yy'));  
            mui.plusReady(function() {  

                mui(".mui-table-view").on("tap", "li", function() {  
                    mui.openWindow({  
                        //url: 'xq_yy.html',  
                        id: 'xq_yy',  
                        styles: {  
                            top: '0px', //新页面顶部位置  
                            bottom: '0px', //新页面底部位置  
                        },  
                        extras: {},  
                        createNew: false, //是否重复创建同样id的webview,默认为false:不重复创建,直接显示  
                        show: {  
                            autoShow: true, //页面loaded事件发生后自动显示,默认为true  
                            aniShow: 'slide-in-right', //页面显示动画,默认为”slide-in-right“;  
                            duration: 200, //页面动画持续时间,Android平台默认100毫秒,iOS平台默认200毫秒;  
                            event: 'titleUpdate', //页面显示时机,默认为titleUpdate事件时显示  
                            extras: {} //窗口动画是否使用图片加速  
                        }  
                    })  
                });  
            })  
        </script>  
    </body>  

</html>

解决不了,这个是完整的代码.打印出来是空,这个预加载应该怎么解决?

@DCloud_MUI_near

杨婆婆管家家

杨婆婆管家家 (作者) - 80后

上传附件了
母页面是:yy_qc.html
要预加载子页面:xq_yy.html

最后通过一个点击事件打开xq_yy.html

谢谢你,辛苦了,这么晚还帮我看
@DCloud_MUI_near

杨婆婆管家家

杨婆婆管家家 (作者) - 80后

@DCloud_MUI_near

n***@gmail.com

n***@gmail.com

1.打开应用时你不应该在plusReady事件未触发前调用任何有关plus的api。例如plus.webview.currentWebview() 这个时候肯定会报错

  1. 在你预加载的页面中,你监听了关闭按钮,并且把当前页面给关闭了,这个时候你想通过openWindow方法再进入 ,肯定也会报错。已经关闭了页面肯定找不到相应id了。你应该对预加载页面的back事件做隐藏处理,而不是关闭。
  • 杨婆婆管家家 (作者)

    我尝试过把 mui.init({ preloadPages: [{ url: 'xq_yy.html', id: 'xq_yy'}]});写在plusReady事件内,还是失败.

    只是监听单击事件,事件发生后才关闭xq_yy.html这个页面.预加载的时候会执行这些事件吗?

    我晚上回家测试一下把关闭页面改成隐藏页面.有问题我会及时反馈

    谢谢您了,非常辛苦的回复!

    2017-07-25 11:15

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