欢迎来到 GeneXus问答,任何有关GeneXus的技术问题都可以在这里提问,你将会收到社区其他成员的回答。

可查看GeneXus资源列表获取有关GeneXus信息

提问说明:
问题描述尽量清晰明了,建议按如下格式提问
版本:GeneXus15U11
环境:.net/java
运行:web/sd
现象:xx
描述:xx

请尽可能说明碰到的问题,如果问题不合规,管理员会删除该提问,多次违规将禁用账号。

GeneXus开发的原始APP中如何嵌入网页?WebBrowser这个对象如何使用?

+1 投票
GeneXus可以开发原生的APP,怎么做混合模式的开发,如何使用WebBrowser
最新提问 9月 26 分类:Android | 用户: bob.guo (8,930 分)
修改于 9月 27 用户:xue

1个回答

+1 投票
 
已采纳

混合模式的开发分几种情况,除了APP使用GeneXus来做之外,web网页的不同会有一些差别。

这里分开说明一下,会有一些测试截图方便理解。

  1. 使用GX开发web网页
    都是通过GeneXus来做,APP和Web一起,然后在App中通过Component对象来调用Web的网页。
    这种情况下,可以完美支持,不需要做额外处理,业务数据增删改及常规操作都可以在手机端显示的网页上进行。

    比如,这里有一个component来调用GX的web页面,
    component直接打开了WWB页面,

    SD手机端直接点击这个按钮打开网页之后,

    所有业务操作,增删改查都没有问题,


    但是,如果在这个gx开发的web页面中,有跳转到别的链接地址的操作,会打开手机浏览器访问要跳转的链接。
    比如,上图中有五个链接,其中"Link到百度""link属性为百度"两个会打开浏览器访问百度,而剩余三个链接到GX开发的页面可以正常在手机端显示。

  2. 链接非GX开发的web网页
    这种情况下,sd端使用component来显示web网页也是没有问题的。
    比如,测试中SD页面上的第二个按钮,BAIDU,就是在SD中显示百度网页,

    但是,如果在这个页面中有跳转到链接地址,就会打开手机端浏览器,或者像百度京东这种跳转时有认证的会直接出现网页错误。
  3. 这里就要说明一下WebBrowser这个外部对象
    它可以在SD捕捉到页面中即将跳转打开的网页,并决定是否需要在浏览器打开。
    WebBrowser external object
    然后是解决上述问题,需要通过WebBrowser捕获url之后,重新给component赋值这个url,同时控制其不通过浏览器打开。
    具体代码如下,

    Event WebBrowser.BeforeNavigate(&url,&handle)

        composite

            &component = &url

            &handle = true

        endcomposite

    Endevent
    &url是url类型,即字符串,将要跳转打开的链接地址;
    &handle是boolean类型,true为不通过浏览器打开,false为通过浏览器打开,默认值是false

通过上述方式添加代码之后,GX页面中跳转到别的地址,或者外部页面中再次跳转链接,都不会再打开手机端浏览器,可以直接在手机端页面显示。

最新回答 9月 26 用户: bob.guo (8,930 分)
采纳于 9月 26 用户:xue
...