飘逸的厨子
飘逸的厨子
  • 发布:2016-09-13 17:51
  • 更新:2016-09-13 18:02
  • 阅读:7564

监听DOMContentLoaded事件 报window.plus未定义

分类:HTML5+
<!DOCTYPE html>  
<html>  
<head>  
  <meta charset="utf-8"/>  
  <!--<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>  
      <meta name="HandheldFriendly" content="true"/>  
      <meta name="MobileOptimized" content="320"/>-->  
  <title></title>  
  <script type="text/javascript" src="../../js/frame/barCommon.js"></script>  
  <script type="text/javascript">  

    var ws=null,wo=null;  
    var scan=null,domready=false;  
    // H5 plus事件处理  
    function plusReady(){  

      alert('ws='+ws);  
      alert('window.plus=' + window.plus);  
      alert('domready='+domready);  
      if(ws||!window.plus||!domready){  
        return;  
      }  
      alert('进入了'+ws);  
      // 获取窗口对象  
      ws=plus.webview.currentWebview();  
      wo=ws.opener();  
      // 开始扫描  
      ws.addEventListener('show',function(){  
        scan=new plus.barcode.Barcode('bcid');  
        scan.onmarked=onmarked;  
        scan.start({conserve:true,filename:"_doc/barcode/"});  
      });  
      // 显示页面并关闭等待框  
      ws.show("pop-in");  
      wo.evalJS("closeWaiting()");  
    }  
    if(window.plus){  
      alert('1');  
      plusReady();  
    }else{  
      alert('2');  
      document.addEventListener("plusready",plusReady,false);  
      alert('2.window.plus=' + window.plus);  
    }  
    // 监听DOMContentLoaded事件  
    document.addEventListener("DOMContentLoaded",function(){  
      alert('3');  
      alert('3.window.plus=' + window.plus);  
      domready=true;  
      plusReady();  
    },false);  
    // 二维码扫描成功  
    function onmarked(type,result,file){  
      switch(type){  
        case plus.barcode.QR:  
          type = "QR";  
          break;  
        case plus.barcode.EAN13:  
          type = "EAN13";  
          break;  
        case plus.barcode.EAN8:  
          type = "EAN8";  
          break;  
        default:  
          type = "其它"+type;  
          break;  
      }  
      result = result.replace(/\n/g, '');  
      wo.evalJS("scaned('"+ type +"','"+ result +"','"+ file +"');");  
      back();  
    }  
    // 从相册中选择二维码图片  
    function scanPicture() {  
      plus.gallery.pick(function(path){  
        plus.barcode.scan(path,onmarked,function(error){  
          plus.nativeUI.alert( "无法识别此图片" );  
        });  
      },function(err){  
        plus.nativeUI.alert("Failed: "+err.message);  
      });  
    }  
  </script>  
  <style type="text/css">  
    #bcid {  
      width: 100%;  
      position: absolute;  
      top: 0px;  
      bottom: 44px;  
      text-align: center;  
    }  
    .tip {  
      color: #FFFFFF;  
      font-weight: bold;  
      text-shadow: 0px -1px #103E5C;  
    }  
    footer {  
      width: 100%;  
      height: 44px;  
      position: absolute;  
      bottom: 0px;  
      line-height: 44px;  
      text-align: center;  
      color: #FFF;  
    }  
    .fbt {  
      width: 50%;  
      height: 100%;  
      background-color: #FFCC33;  
      float: left;  
    }  
    .fbt:active {  
      -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.5);  
      box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.5);  
    }  
  </style>  
</head>  
<body style="background-color: #000000;">  
<div id="bcid">  
  <div style="height:40%"></div>  
  <p class="tip">载入中...</p>  
</div>  
<footer>  
  <div class="fbt" onclick="back();">取  消</div>  
  <div class="fbt" onclick="scanPicture();">从相册选择二维码</div>  
</footer>  
</body>  
</html>  
2016-09-13 17:51 1 条评论 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

调用HTML5+相关的API,需要监听plusready事件。
请参考Hello5+示例项目中的写法,或mui封装的plusReady()方法

document.addEventListener('plusready', plusReady);  
function plusReady() {  
    // 这里调用HTML5+API  
}  
  • 飘逸的厨子 (作者)

    官方的例子,在Hbuilder里面运行是正常的,可以扫描二维码,在webstrom里面报plus未定义,你知道是怎么回事吗?

    2016-09-14 09:50

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