douban / rexxar-android

Mobile Hybrid Framework Rexxar Android Container
MIT License
668 stars 103 forks source link

页面跳转及传递参数问题 #46

Open xiaolongyuan opened 7 years ago

xiaolongyuan commented 7 years ago

1 请问 如何从页面 A 页面 B?

2 id=101111 参数如何传递?

实际环境中 url会被转换为 file:///http://cdn.xxxx.com/rexxar/book/re_details-edfdc283f2.html?uri=ifitting://xxxx.com/cashbox/re_details?id=77992017022800000005

qluan commented 7 years ago

@xiaolongyuan

“请问 如何从页面 A 页面 B?”

rexxar页面的跳转都是基于uri的,所以首先需要给页面A和B定义好route,比如 页面A: xx://xx.com/book/index 页面B: xx://xx.com/book/detail?id=101111

从页面A打开页面B,只需要在页面A中,然后在webview中处理xx://xx.com/book/detail?id=101111 的跳转即可, webview中对uri的处理可以做的更通用一些,比如1. 先查看rexxar能否处理该uri;2. 再查看native页面是否可以处理该uri 3. 默认处理

“id=101111 参数如何传递?”

当我们用rexxarview打开xx://xx.com/book/detail?id=101111这个uri的时候,rexxar底层会根据route查找html,替换成file:///http://cdn.xxxx.com/rexxar/book/re_details-edfdc283f2.html?uri=ifitting://xxxx.com/cashbox/re_details?id=77992017022800000005,这些逻辑都是疯状态rexxarview里面,不需要关心

在html页面里面可以通过window.location.href解析得到完整的uri(包含uri中的参数)

xiaolongyuan commented 7 years ago

谢谢回复。

还有情况就是

1. 生产环境 开发环境 问题

我想到是 线上有专门线上路由 线下走线下路由 线上访问形式不变 线下开发 以官方推荐的

在浏览器中通过 http://localhost:8080/rexxar/demo.html?uri=douban://douban.com/rexxar_demo/ 这样的url来查看页面。

请问这种思路对么 或者有更适合的方式么?

2 各种访问情况问题

场景说明 :

为什么需要支持 b c 方式进行 ? 因为活动页。

3 以如何形式打开页面问题

我现在是

  open(uri) {
    // super.call({
    //   action:'open',
    //   uri:uri,
    //   mode
    //   });

    let iframe = document.createElement('iframe');
    iframe.src = uri;
    iframe.style.display = 'none';
    document.documentElement.appendChild(iframe);
    setTimeout(function() {
      document.documentElement.removeChild(iframe);
    }, 0);
  }

再次感谢您抽空解答 谢谢