全部产品

页面恢复运行

更新时间:2020-08-07 19:11:29

当一个 webview 界面重新回到栈顶时,例如从后台被唤起、锁屏界面恢复、从下个页面回退,会触发页面恢复运行(resume)事件。

如果这个界面是通过 popWindow 或 popTo 到达,且传递了 data 参数,则此页可以获取到这些参数。

如果在界面的 resume 之前先发生了 App 的 resume,则 event 还会有一个resumeParams,包含 app resume 时接收到的参数。

注意

  • 对于 10.0.15 以上版本的客户端,容器新增了 pageResumeappResume 事件,用于业务区分是哪种情况触发 resume
  • 页面恢复运行(resume)= 客户端从后台被唤起、锁屏界面恢复(appResume)+ 窗口从下个页面回退后恢复显示(pageResume)。
  • 由于 Android 原生的 resumepause 事件不能区分是压后台导致还是页面切换导致,所以 pageResumepagePause 事件是通过 JSAPI 调用记录去回调的,所以仅适用于同一个 session 内 window 之间的互相切换。对于 startApp 和其他客户端直接切换页面方式不生效,例如 chooseImage

resume 接口使用方法

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

代码示例

以下示例为返回的时候带有数据:

  1. <h1>点击"打开新页面",然后返回时,会带数据回这个页面</h1>
  2. <a href="#" class="btn J_demo">打开新页面</a>
  3. <script>
  4. function ready(callback) {
  5. // 如果 jsbridge 已经注入则直接调用
  6. if (window.AlipayJSBridge) {
  7. callback && callback();
  8. } else {
  9. // 如果没有注入则监听注入的事件
  10. document.addEventListener('AlipayJSBridgeReady', callback, false);
  11. }
  12. }
  13. ready(function() {
  14. document.querySelector('a').addEventListener('click', function() {
  15. AlipayJSBridge.call('pushWindow', {
  16. url: location.pathname
  17. });
  18. });
  19. document.addEventListener('back', function(e) {
  20. e.preventDefault();
  21. AlipayJSBridge.call('popWindow', {
  22. data: {
  23. from: location.href,
  24. info: Date.now()
  25. }
  26. });
  27. });
  28. document.addEventListener('resume', function(event) {
  29. alert('页面回退时带过来的内容: ' + JSON.stringify(event.data));
  30. });
  31. });
  32. </script>

API

出参

事件处理函数的 event 参数有以下属性:

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