resume 页面恢复运行

优质
小牛编辑
129浏览
2023-12-01
Since 8.1

resume

当一个webview界面重新回到栈顶时(从后台被唤起、锁屏界面恢复、从下个页面回退),会触发此事件。
如果这个界面是通过popWindow/popTo到达,且传递了data参数,此页可以获取到data。
如果在界面的resume之前先发生了app的resume, 则event还会有一个resumeParams, 包含app resume时接收到的参数

备注:10.0.15客户端以上,容器新增了pageResume和appResume事件,用于业务区分是哪种情况触发的resume。

resume=appResume(客户端从后台被唤起、锁屏界面恢复)+pageResume(窗口从下个页面回退后恢复显示)

注意: 由于Android原生的resume和pause事件不能区分是压后台导致还是页面切换导致,所以pageResume和pagePause事件是通过jsapi调用记录去回调的,所以仅适用于同一个session内window之间的互相切换。对于startApp和其他客户端直接切换页面方式(比如chooseImage)不生效。

使用方法

document.addEventListener('resume', function(e) {
  console.log("resumed");
}, false);

代码演示

返回的时候有数据带过来

<h1>点击"打开新页面",然后返回时,会带数据回这个页面</h1>
<a href="#" class="btn J_demo">打开新页面</a>
<script>
function ready(callback) {
  // 如果jsbridge已经注入则直接调用
  if (window.AlipayJSBridge) {
    callback && callback();
  } else {
    // 如果没有注入则监听注入的事件
    document.addEventListener('AlipayJSBridgeReady', callback, false);
  }
}
ready(function() {
  document.querySelector('a').addEventListener('click', function() {
    AlipayJSBridge.call('pushWindow', {
      url: location.pathname
    });
  });

  document.addEventListener('back', function(e) {
    e.preventDefault();

    AlipayJSBridge.call('popWindow', {
      data: {
        from: location.href,
        info: Date.now()
      }
    });
  });

  document.addEventListener('resume', function(event) {
    alert('页面回退时带过来的内容: ' + JSON.stringify(event.data));
  });
});
</script>
查看演示 扫码查看 用支付宝扫码运行

API

出参

事件处理函数的event会有2个属性

名称类型描述
dataobject当前app实例内popTo或者popWindow带过来的内容,无法跨appId传递数据
resumeParamsobject包含app resume时接收到的参数