LLgg
LLgg
  • 发布:2016-12-27 21:03
  • 更新:2018-03-29 18:01
  • 阅读:8604

【报Bug】plus.key.addEventListener('backbutton',function()失效,

分类:HTML5+

详细问题描述
plus.key.addEventListener('backbutton',function()失效
mui.back = function()失效

第一次打开页面可以正常使用,但是打开一个新页面再返回到原页面,再使用plus.key.addEventListener('backbutton',function()和 mui.back = function()都失效

更新12月24版本之后出现的问题,
更新12月26号的Alpha版还是一样存在问题

2016-12-27 21:03 负责人:无 分享
已邀请:
Lee_Bus

Lee_Bus

一天一顶啊 ,什么时候能修复下嘛

赵梦欢

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

报一下机型和客户端5+运行环境的版本号plus.runtime.innerVersion

5***@qq.com

5***@qq.com

最新版本就出现这样的问题

DCloud_Android_ST

DCloud_Android_ST

每次进入应用都会有这个现象 还是只是第一次进入应用由此问题

赵梦欢

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

客户端排查确定了问题,由于native层增加了机制导致的backbutton监听事件失效,已经给出了修护方案:

临时方案:
在plusready事件之后 plus.webview.currentWebview().appendJsFile('_www/fix.js'); 可以修复这个问题。
(fix.js文件见下面附件)

或者使用alpha版本打包机打包:
http://pan.baidu.com/s/1hs0O4eS#list/path=%2F&parentPath=%2Falpha%3Fqq-pf-to

因为是部分业务逻辑可能会有这种bug,下次发正式版本会修复这个问题,目前临时方案不能解决问题的发一个可以重现问题的测试工程。

  • l***@qq.com

    使用这个没有解决,测试设备三星S7

    2016-12-29 23:45

l***@qq.com

l***@qq.com

同样遇到这个问题
客户端5+版本
1.9.9.28189
1.9.9.28326
都存在这个问题

c***@163.com

c***@163.com

这问题纠结了两天了,晕,我以为我代码有问题呢

s***@163.com

s***@163.com

上周一打包还是好的,就加了点业务逻辑,这周就不行了;我从周一下午打包后,发现这个问题,纠结到现在,各种排查,也没有找到问题

但是昨晚,自己就参照网上【如下】写了一个简易的移动app,打包成apk在手机上点击返回键却弹出了alert,如果是官方打包出现bug,那为什么,这个又是好的呢?求解惑 @DCloud_客服_小青年

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="utf-8">    
<title>Key Example</title>    
<script type="text/javascript">    
// 监听“返回”按钮事件    
function addEventTest() {    
plus.key.addEventListener("backbutton",function(){    
alert( "BackButton Key pressed!" );    
});    
}    
</script>    
</head>    
<body>    
<button onclick="addEventTest()">监听“返回”按键</button>    
</body>    
</html>  

不知这个问题,官方什么时候能够修复,还是一直采取这个临时方案 @DCloud_客服_小青年

  • 赵梦欢

    这个返回不是所有情况下会出现这个问题,是部分情况下可能会有这个问题,下次发的正式版会解决这个问题。

    2016-12-30 12:18

  • s***@163.com

    这个大概需要多长时间呢?公司app需要上线,我得报备一个大概的日期

    2016-12-30 13:31

l***@qq.com

l***@qq.com

使用临时方案我这打包后无效,使用真机调试出现如下错误。
Uncaught TypeError: Cannot redefine property: pageloadover

c***@icloud.com

c***@icloud.com

vue-cli 單頁面模式開發的app,之前還好好的,更新后打包的app全局返回監聽,全局網絡監聽,全局推送監聽都衹有起始頁面有效,一跳轉頁面就失效,好蛋疼,

  • LFZ

    我也是这样,后来回滚就的sdk,我是离线打包的

    2017-02-09 12:03

s***@163.com

s***@163.com

我现在真机模拟安卓返回键都失效了,这个安卓返回键的bug什么时候修复呢?到底修不修复这个问题?如果修复,大概什么时候修复?报备半个月了,不管怎么样还是希望官方能给个准话,这样我们也好向客户解释呢?javascript:;

  • s***@163.com

    客服提供的 公网地址:

    Win版本:http://update.dcloud.net.cn/alpha/HBuilder.windows@20170112.zip

    还是不行

    2017-01-12 15:20

s***@163.com

s***@163.com

坐等修复,客户再三要求,年前打包交付时,一定要解决这个问题

LLgg

LLgg (作者)

什么时候修复

Lee_Bus

Lee_Bus

跪求修复啊 ,一天一顶

Eiby

Eiby

同问,什么时候能修复,调了一天代码!

3***@qq.com

3***@qq.com

这个问题,经过我调试,真机调试和打包运行都已经解决了,不是使用官方的fix.js,在代码里面加一个setTimeout,等待1-2秒,再执行
setTimeout(function(){
try{
plus.key.addEventListener('backbutton', function() {
plus.nativeUI.toast("触发返回按钮");
}, false);
}catch(e){

}  

},2000);
就是Ok的,给还在被这个问题困扰的人,提供一个方案

  • s***@163.com

    这个当时出现问题的时候,我就尝试过,并没有什么效果,刚在.run里面加了,还是没有什么效果呢

    2017-01-22 10:23

  • 1***@qq.com

    同样无效

    2017-01-23 11:05

  • 3***@qq.com

    在我的代码里面测试是ok的,我不是用的mui框架,用 的是vue

    2017-01-25 13:53

  • LFZ

    我用 vue单页面也是返回没反应

    2017-02-09 12:06

Lee_Bus

Lee_Bus

目前我通过setInterval 去执行。。。。。单页面模式下会存在这个问题

l***@qq.com

l***@qq.com

单页面路由的方法,只能是先监听返回键,第一次有效,然后通过切换到任何一个页面(只要history被修改过),就又无效了,现在临时的方法,就是每次切换一个页面(history被修改),就重新监听一遍返回键。
这个毕竟不是解决问题方法,希望官方能修复此问题。

  • LFZ

    我也是这个问题

    2017-02-09 17:11

5***@qq.com

5***@qq.com

现在还没有解决?有这么难吗?

s***@163.com

s***@163.com

这个问题,有解决么?我现在两个app,相同的run,一个打包在安卓机上,可以返回,一个却是不能返回的,不知道什么原因

.run(['$rootScope','$ionicPlatform','$state','$location','$ionicHistory','mypush','dialogsManager',  
function($rootScope,$ionicPlatform,$state,$location,$ionicHistory,mypush,dialogsManager) {  
  $ionicPlatform.ready(function() {  
    if(window.cordova && window.cordova.plugins.Keyboard) {  
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);  
      cordova.plugins.Keyboard.disableScroll(true);  
    }  
    if(window.StatusBar) {  
      StatusBar.styleDefault();  
    }  
    function setBar(){  
      console.log('sfhsafhsafh');  
      var first = null;  
      plus.key.addEventListener("backbutton",function(){  
        console.log(11);  
        if($state.is('tab.myClass')){  
          if(!first){  
            console.log(10);  
            first = new Date().getTime();  
            dialogsManager.showMessage('再次点击退出应用');  
            setTimeout(function(){  
                first = null;  
            },1000);  
          }else{  
            console.log(12);  
            if(new Date().getTime()-first<1500){  
              plus.runtime.quit();  
            }  
          }  
        }else{  
          console.log(22);  
          $ionicHistory.goBack();  
        }  
      });   
      // }  
      //关闭启动画面  
      plus.navigator.closeSplashscreen();  
    }  
    //初始化plus对象  
    if (window.plus) {  
      setBar();  
    } else {  
      document.addEventListener("plusready", setBar, false);  
    }  

    mypush.init();  
  });  
}])
1***@qq.com

1***@qq.com

vue cli用了mui监听返回,第一次进,只能一只进,不能退,推出应用再进去就一切正常了,求解,大神们。

1***@163.com

1***@163.com

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title></title>
<script type="text/javascript">

    document.addEventListener('plusready', function(){                                                                                                                                
        plus.key.addEventListener("volumnupbutton",function(){                                                                                                                        
            alert( "volumnupbutton Key pressed!" );                                                                                                                                   
        });                                                                                                                                                                           
    });                                                                                                                                                                               

</script>                                                                                                                                                                             

</head>
<body>

</body>
</html>

设备获取不到音量点击事件,各位大神有什么好的方法吗

4***@qq.com

4***@qq.com

请问这个问题解决了吗, 重写mui.back无法阻止默认事件, 其他问题里的解决方法都试了, 还是解决不了

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