webview动态传参问题
发布于 7 年前 作者 aqian 12110 次浏览 来自 问答

通过另一个页面navigate传递过来的参数在onload中用options接受后再动态修改webview跳转的路径,发现为空,若直接写死设置则可以,不知道是不是很奇怪的bug

代码如下:

 这里是另一个页面往webview跳转的方法
wx.navigateTo({
      url: '../webview/webview?courseno=' + wxcourseId + '&p=' + wxcoursep
    })
这里是页面加载的生命周期函数
onLoad: function (options) {
   console.log(Number(options.courseno) === 1555, this.data)
//如果不写Number(options.courseno),而直接写1555,就是可以的
   this.setData({
     "courseno": Number(options.courseno),//即这里必须写死,不能从options中取
     "p": Number(options.p)
   })
 },
"webview" src="https://yoururl/?courseno={{courseno}}&p={{p}}">

这是页面webview的标签,因为想动态传递过来,而不想写死,求大神指教

9 回复

Number(options.courseno)放在外边定义一个变量试试:var courseno = Number(options.courseno),然后set赋值

不是,问题就是webview的src中变量有时候带不过去,怀疑和onLoad的生命周期和web-view跳转的先后顺序不稳定有关。所以我直接把整个src作为一个变量了,而不是单个的courseno和p,

即webview的标签:

<web-view src="https://yoururl/?courseno={{courseno}}&p={{p}}"></web-view>

变成了

<web-view id="webview" src="{{websrc}}"></web-view>

这样onLoad那边setData没好,它就不会跳转。就不会出现参数带不过去的情况了

@ ,你这边具体的代码能说下吗,我也遇到类似问题是,传入4个及以下参数H5正常请求接口,H5页面数据正常push。

传入4个以上H5页面直接加载不出来

又多试了几次,在模拟器里是有时可以有时不行,不知道真机怎么样,

是参数格式问题吗?

老哥,你这个参数改变之后会不会出现点两次放回才能返回到上一级页面的问题

多谢大家了,感觉已经解决了,写法问题不大,经测试,模拟器上不灵敏,真机上会出现视频加载需要重试的情况

onShow里无法获取wx.navigator的参数吧?我试试

放在onShow试试看

回到顶部