全部产品

关闭多个页面

更新时间:2020-04-13 16:44:39

此接口用于一次回退多级页面。

注意:只允许 popTo 到当前 App 实例内的页面,不允许跨 appId 跳转。

popTo 接口的使用方法

  1. // 关闭当前打开的页面
  2. AlipayJSBridge.call('popTo', {
  3. index: -1
  4. });

代码示例

  • 关闭当前页面并且传递数据:

    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('.J_demo').addEventListener('click', function() {
    15. // 传递的 data 对象将会被即将露出的页面通过 resume 事件接收
    16. AlipayJSBridge.call('popTo', {
    17. index: -1, // 回退到上一个页面,假如这个时候没有上一个页面,就会报错
    18. data: { // 特别强调:data 是字典,不是数组
    19. from: location.href,
    20. info: Date.now()
    21. }
    22. }, function(e) { // 添加回调,因为 popTo 不一定会成功(当前页面是唯一打开的页面的时候,会报错)
    23. alert(JSON.stringify(e));
    24. });
    25. });
    26. });
    27. </script>
  • 通过 urlPattern 返回到符合正则匹配的页面:

    1. <h1>返回到符合某个规则的 URL</h1>
    2. <h3></h3>
    3. <a href="javascript:void(0)" class="btn J_new_window">新窗口打开当前页面</a>
    4. <a href="javascript:void(0)" class="btn J_demo">返回</a>
    5. <script>
    6. var query = getQuery();
    7. var depth = (+query.depth) || 0;
    8. document.querySelector('h3').innerHTML = '当前页面深度: ' + depth;
    9. function ready(callback) {
    10. // 如果 jsbridge 已经注入则直接调用
    11. if (window.AlipayJSBridge) {
    12. callback && callback();
    13. } else {
    14. // 如果没有注入则监听注入的事件
    15. document.addEventListener('AlipayJSBridgeReady', callback, false);
    16. }
    17. }
    18. ready(function(){
    19. document.querySelector('.J_demo').addEventListener('click', function() {
    20. AlipayJSBridge.call('popTo', {
    21. urlPattern: 'pop-to-url-pattern.html',
    22. }, function(e) {
    23. alert(JSON.stringify(e));
    24. });
    25. });
    26. document.querySelector('.J_new_window').addEventListener('click', function() {
    27. AlipayJSBridge.call('pushWindow', {
    28. url: location.pathname + '?depth=' + (1+depth),
    29. });
    30. });
    31. });
    32. </script>

API

  1. AlipayJSBridge.call('popTo',{
  2. index, urlPattern
  3. }, fn)

indexurlPattern 是 2 种查询模式,不应该被同时使用。

入参

名称 类型 描述 必选 默认值
index int 目标界面在会话界面栈中的索引;如果小于零,则将与当前界面的 index 相加 Y -
urlPattern string 目标界面的 URL 匹配表达式(URL 如果包含 urlPattern,匹配成功) Y “”
fn function 操作成功时,回调可能不被调用;操作失败时,回调函数执行 N -

出参

名称 类型 描述
result undefined 操作成功时,回调可能不被调用;result 不应被使用。

错误码描述

错误码 描述
10 未配置参数;
无效的 index;
未匹配 urlPattern

注意事项

  • 一般情况下,popTo 用于分多步才能完成的场景,比如用户信息完善时回退,三级地址选择后返回等。
  • 如果通过 urlPattern 来返回,popTo 会返回到离当前页面最远的页面,也就是栈底。同时不会去检测当前页面的 URL 是否符合。
  • 关于 popTo 时所带的数据如何被接收,请查看 页面恢复运行(resume 事件)