uniapp監聽webview值的變動(引入頁面的title)

vue頁面引入:
在這裏插入圖片描述
html頁面:

<title>上傳文件</title>
<body style="position: fixed; top: 300px; left: 47%;">
    <div class="head-btn">
        <form action="" method="post">
            <a href="javascript:;" class="file">選擇文件
                <input type="file" name="uploadFile" id="uploadFile" >
            </a>
        </form>
        <p class="showFileName"></p>
    </div>
    <div class="box_btn" id="app">
        <button class="btn" type="button" data-action="redirectTo">確定</button>
        <button class="btn1" type="button" data-action="navigateBack" id="postMessage">取消</button>
    </div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script>
var title = document.getElementsByTagName('title')[0];
function getQuery(name) { // 獲取uni傳值
    // 正則:[找尋'&' + 'url參數名字' = '值' + '&']('&'可以不存在)
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if(r != null) {
        // 對參數值進行解碼
        return unescape(r[2]);
    }
    return null;
}
// 文件上傳
$('.btn').click(function(evt) { 
  var ipt = document.getElementById('uploadFile');
   var formdata = new FormData(); // 創建一個form類型的數據
   formdata.append("files",ipt.files[0]); // 獲取上傳文件的數據
   formdata.append("orderId",getQuery('orderId')); // 獲取上傳文件的數據
   formdata.append("name","name"); // 獲取上傳文件的數據
   // console.log(formdata)
   // 改變title
   title.innerText = '上傳'
   $.ajax({
     url: '後端接口',
     type: "POST",
     processData: false,
     contentType: false,
     data:formdata,
     headers: {
       'token': getQuery('token')
     },
     success: function(res) {
     	// 改變title
       title.innerText = res.message
     },
     error: function(err) {
       alert('上傳失敗')
     }
   });
 });
 //取消文件上傳
 $('.btn1').click(function(evt) {
   var target = evt.target;
   if (target.tagName === 'BUTTON') {
     var action = target.getAttribute('data-action');
     if (action == 'navigateBack') {
     	// 改變title
      title.innerText='取消'
     }
   }
 });
</script>

vue頁面:

// 監聽title是安卓原生事件
shang () { // 上傳
  // 獲取所有的webview對象
  const currentWebview = _this.$mp.page.$getAppWebview();
  // 需要延時,不然拿不到
  setTimeout(function(){
  	// 獲取當前頁面的webview對象
    var web = currentWebview.children()[0];
    // 監聽當前頁面webview對象的title
    web.addEventListener('titleUpdate',({title}) => {
      if (title === '上傳') { 
        uni.showLoading({ // 動畫
            title: '上傳中' 
        });
        // title!=='上傳文件'
      } else if (title&&!title.includes('上傳文件')) {
        uni.hideLoading(); // 關閉動畫
        uni.showToast({ // 提示框
            title: title,
            icon: 'none',
            duration: 1000
        });
      }
      if (title === '取消') {
        uni.showToast({ // 提示框
            title: '取消上傳',
            icon: 'none',
            duration: 1000
        });
      }
    },false)
  },200)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章