Giter Site home page Giter Site logo

Comments (4)

smallbuer avatar smallbuer commented on July 24, 2024

部分方法需要在资源未加载完成前调用,这种能举例说明吗?在页面未加载完成前需要调用什么原生的方法呢?

from jsbridge-android.

liyazhou0221 avatar liyazhou0221 commented on July 24, 2024

部分方法需要在资源未加载完成前调用,这种能举例说明吗?在页面未加载完成前需要调用什么原生的方法呢?

getSystemInfo 方法,需要在刚进入时判断是那个系统,区分企业微信和自有App时用到的。

今天重新看这个问题发现,使用vConsole(大概十分之一的几率)如果页面出现打印日志“start jsbridge ... end jsbridge ...”时都无法调用jsbridge,不出现该日志时反而可以正常调用???

按照正常的推理,每次打开webView加载页面,注入成功后应该都会出现这个打印日志才读啊?有点看不懂了。感觉像是只要是先加载完成,后注入的话都不可以调用到jsbridge 。

只在onPageFinished时添加注入,每次都会出现该日志,这个看起来是正常的,就是不能调用到jsbridge。好像确实证实了上边的猜想。

不是很懂vue和H5的加载流程,有点猜不到是哪里的问题。

from jsbridge-android.

smallbuer avatar smallbuer commented on July 24, 2024

部分方法需要在资源未加载完成前调用,这种能举例说明吗?在页面未加载完成前需要调用什么原生的方法呢?

getSystemInfo 方法,需要在刚进入时判断是那个系统,区分企业微信和自有App时用到的。

今天重新看这个问题发现,使用vConsole(大概十分之一的几率)如果页面出现打印日志“start jsbridge ... end jsbridge ...”时都无法调用jsbridge,不出现该日志时反而可以正常调用???

按照正常的推理,每次打开webView加载页面,注入成功后应该都会出现这个打印日志才读啊?有点看不懂了。感觉像是只要是先加载完成,后注入的话都不可以调用到jsbridge 。

只在onPageFinished时添加注入,每次都会出现该日志,这个看起来是正常的,就是不能调用到jsbridge。好像确实证实了上边的猜想。

不是很懂vue和H5的加载流程,有点猜不到是哪里的问题。

你可以尝试在vue的mounted生命周期方法中去调用JS桥,例如:
mounted () {
this.toast()
},
..................
methods: {
toast () {
this.$bridge.callhandler('toast', {
'msg': '12222'
}, (response) => {
console.log(response)
})
}
}

请参考如上方式调用JS桥,必定是可以成功的,打印start jsbridge ... end jsbridge代表JS桥的JS对象初始化完成,JS桥可以进行通讯了

from jsbridge-android.

liyazhou0221 avatar liyazhou0221 commented on July 24, 2024

请参考如上方式调用JS桥,必定是可以成功的,打印start jsbridge ... end jsbridge代表JS桥的JS对象初始化完成,JS桥可以进行通讯了

检查了vue工程,大部分的方法调用都在mounted,少部分在created,唯一不在vue的生命周期调用的只有getSystemInfo这个方法。

使用vConsole的命令行查看window.WebViewJavascriptBridge,确实是存在的,说明已经初始化完成了,使用命令行调用其它插件方法也能成功。看起来确实是getSystemInfo在资源未加载完成时调用了,导致无法获取到系统类型,也就无法初始化window.mappType,最终导致不能成功调用其它方法。

在不能修改vue工程配置的情况下,为了兼容这种不确定因素,目前是在onPageFinished中使用loadUrl主动修改window.mappType值,在onPageStarted等其它方法中进行判断注入jsbridge,这样在页面加载完成后调用jsbridge都是可以的。

暂时能想到的解决方法就是这些了,基本上不影响我的应用功能。

from jsbridge-android.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.