V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awebird
V2EX  ›  程序员

Android webview调用asset下的本地webapp,不能传递参数和hash的bug,怎么解?

  •  
  •   awebird · 2013-11-16 17:27:41 +08:00 · 5946 次点击
    这是一个创建于 3812 天前的主题,其中的信息可能已经有所发展或是发生改变。
    [目前的问题]
    我这边是web侧开发,和Android的同事合作一个hybrid app,web部分(html css js)整个包放在asset/www/下(通过ajax和服务器通信),Android侧使用 loadUrl("file:///android_asset/www/demo_project/#/demo/123");调用,出现 Page Not Found

    同样的webapp部分,放在cordova(phonegap开源)的asset下是可以正常运行的

    [可能的原因]
    查了下,最后定位在Android的issue 17535 (即webview调用本地 不能传参数和#hashtag)
    https://code.google.com/p/android/issues/detail?id=17535

    有一个解决方案
    http://bricolsoftconsulting.com/fixing-the-broken-honeycomb-and-ics-webview/
    https://github.com/bricolsoftconsulting/WebViewIssue17535Fix

    由于是Android侧的我这边不太懂,而且不知是否可行。这个请问下大家有没有遇到过类似的问题,有没更便捷可行的方案?
    5 条回复    1970-01-01 08:00:00 +08:00
    AlfredZhao
        1
    AlfredZhao  
       2013-11-16 17:57:05 +08:00
    没用过,可以找同事写个webview测试一下~收下了,过几天可能也会遇到这个问题。飘过~!
    Archangel_SDY
        2
    Archangel_SDY  
       2013-11-17 14:21:51 +08:00   ❤️ 1
    要不先loadUrl("file:///android_asset/www/demo_project"), 再从js端改window.location?
    awebird
        3
    awebird  
    OP
       2013-11-18 09:50:42 +08:00
    @Archangel_SDY 但是hash传不进入,js端怎么知道location到哪里呢?
    Archangel_SDY
        4
    Archangel_SDY  
       2013-11-18 11:12:13 +08:00   ❤️ 1
    @awebird 给js传参可以这样:

    loadUrl("javascript:go('#/demo/123')"), go是js函数.
    awebird
        5
    awebird  
    OP
       2013-11-18 12:35:35 +08:00
    @Archangel_SDY 多谢,这个可行!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3347 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:36 · PVG 19:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.