3***@qq.com
3***@qq.com
  • 发布:2017-12-18 15:55
  • 更新:2017-12-18 16:14
  • 阅读:6364

APP内嵌第三方的网页,然后第三方网页如何打开app中的页面

分类:HTML5+
h5+

用HBuilder开发app,因为和别的公司合作,通过mui.openWindow({})打开自己的页面,然后将他们的网页作为自己页面的子页面通过mui.init({subpages:[{xxxx}]})打开,这里都没有问题,但是现在我们通过他们的网页生成了订单,他们要打开我们app的页面,将订单(或者参数)传回给我们这个页面,这该如何实现?

2017-12-18 15:55 负责人:无 分享
已邀请:
回梦無痕

回梦無痕 - 暂停服务

我捋一捋,你的APP用mui.openWindow打开了你们A页面,然后这个A页面上加载一个子页面B页面,而这个B页面是别人公司的。你想要实现的是这个B页面生成一个订单号,然后打开你们的C页面,把订单号传到你们的C页面。
上面我说的没错吧?
如果上面的成立,那么方法有:
如果那个B页面你可以改动,就在B页面增加代码,用plus.webview.create( url, id, styles, extras );中的extras可以传递参数到C页面。
如果那个B页面你不能改动,那么方法就绕一点,那么就在A页面用webview.evalJS(),把js注入B页面,重写某些方法,把plus.webview.create( url, id, styles, extras );方法重写进入B页面主要函数中,让B页面使用重写进入的plus.webview.create( url, id, styles, extras );方法回传参数到C页面;

  • 3***@qq.com (作者)

    的确是你说的这种情况没错,但是B页面不能改动,而且B页面生成订单号以后,点击跳转什么的还是他们那边操作,他们页面上有按钮,通过点击他们的按钮来跳到我们的C页面,把他们的参数传过来。我看了下webview.evalJS()方法,这个方法跳转好像是要我们这边操作,情况似乎不同啊。

    2017-12-18 17:23

  • 回梦無痕

    回复 3***@qq.com:webview.evalJS()方法是给页面注入JS,既然可以注入JS,当然也可以注入打开页面传递参数的JS代码。要在你公司的页面A页面向第三方的B页注入JS。

    2017-12-18 17:28

  • 3***@qq.com (作者)

    回复 回梦無痕:我是这么写的(我自己的A页面打开了自己的B页面,即ws,然后B页面下用create方法创建了别人的C页面embed,然后用append加进B页面中):

    var ws,embed;

    mui.plusReady(function(){

    ws = plus.webview.currentWebview();

    embed = plus.webview.create('myUrl', 'id', {top:'45px',bottom:'0px'});

    ws.append( embed );

    ws.addEventListener("click",function(){

    embed.evalJS('alert("evalJS: "+location.href);');

    },false);

    });

    我通过ws监听点击事件,但是方法并没有执行,我能麻烦您看一下是什么地方错了吗?

    2017-12-19 16:05

  • 7***@qq.com

    我也调用服务器的网页,在这个网页中检测到window. plus是undefined. 好像不能使用plus

    2018-07-19 19:29

5***@qq.com

5***@qq.com

如果是app内页面打开了外部页面,然后外部页面发生改变的时候想要操作app中的页面,你可以通过页面id去注入js方法,也可以在app页面中添加监听

  • 3***@qq.com (作者)

    因为是嵌入别人的页面,别人的页面点击按钮后才会去跳我们app的页面,这个怎么注入呢?

    2017-12-18 17:25

  • 7***@qq.com

    不行啊,在服务器的网页不能使用plus. 你那里可以吗?

    2018-07-19 20:47

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