1、问题出处:http://ask.dcloud.net.cn/question/6571
问题标题:Uncaught TypeError: undefined is not a function at js/mui.min.js:6
真机运行提示上面这个错误,但是程序可以正常运行,是个警告吗?
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <script src="js/mui.min.js"></script> <link href="css/mui.min.css" rel="stylesheet"/> <script type="text/javascript" charset="utf-8"> mui.init(); mui.plusReady() { alert("---"); } function hh() { plus.webview.create("http://www.baidu.com").show(); } </script> </head> <body> <h1> <button class="mui-btn mui-btn-primary" onclick="hh()">Button</button> </h1> </body> </html>
解决办法:mui.plusReady代码块写错了
mui.plusReady(function(){ //业务代码 });
问题标题:真机运行提示错误:Cannot call method 'addEventListener' of null at index1.html:25
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <script src="js/mui.min.js"></script> <link href="css/mui.min.css" rel="stylesheet"/> <script type="text/javascript" charset="utf-8"> //----------- 创建子页面:一个index.html和一个main.html --------------- /* * mui.init({ subpages:[{ url:'main.html', id:'main.html', styles:{ top:'45px',//mui标题栏默认高度为45px; bottom:'0px'//默认为0px,可不定义; } }] }); */ //---------打开新页面-----------------就是这个位置报的错 document.getElementById('main').addEventListener('tap', function() { //打开main.html页面 mui.openWindow({ url: 'main.html', id:'main' }); }); //------------每次页面重新加载时调用------------ mui.plusReady(function(){ console.log(plus.webview.currentWebview().getTitle()); }); function clickMe() { alert(plus.webview.currentWebview().getURL()); } </script> </head> <body> <h1> <button class="mui-btn mui-btn-primary" onclick="clickMe()">点我</button> </h1> <h2> <button class="mui-btn mui-btn-primary" onclick="location.reload()">刷新</button> </h2> <h3> <button id="main" class="mui-btn mui-btn-primary">Tap我</button> </h3> </body> </html>问题原因:这是因为js加载到 document.getElementById('main').addEventListener这行代码时,下方的dom节点尚未生成,故document.getElementById('main')返回为空;
解决办法:
办法一:放入mui.ready中
mui.ready(function(){ document.getElementById('main').addEventListener('tap', function() { //打开main.html页面 mui.openWindow({ url: 'main.html', id:'main' }); }); });办法二:将如上js代码放到</body>节点之后;
3、问题出处:http://ask.dcloud.net.cn/question/4907
问题标题:预加载页面preload方法经常返回undefined
原因:preload方法调用了createWindow方法,createWindow方法里判断了window.plus准备好没,没有准备好直接返回空了,所以造成了undefined
解决办法:所有涉及5+的代码,都要等待plusReady事件发生后才能使用,因此建议使用如下方式:
mui.plusReady(function(){ var productView = mui.preload({ url: '/pages/weimall/productview.html', id: '/pages/weimall/productview.html', }); });