当前位置: 首页 > 编程笔记 >

微信jssdk在iframe页面失效问题的解决措施

王宜
2023-03-14
本文向大家介绍微信jssdk在iframe页面失效问题的解决措施,包括了微信jssdk在iframe页面失效问题的解决措施的使用技巧和注意事项,需要的朋友参考一下

项目需求

微信端添加拍品的页面有照片上传功能,上传时打开一个iframe,该页面用canvas加载用微信jssdk的选择图片接口选择的图片(这里微信会返回一个形如weixin://xxxx的localid,可直接放在img的src里进行预览),可进行放大缩小移动旋转等操作,点击确定按钮将编辑好的图片发送到服务器存成图片

遇到的问题

当子页面功能开发完成后,在主页面通过iframe打开子页面,无法调用微信jssdk接口中的选择图片接口,其他jssdk中的接口也无法正常工作。但是单独打开子页面可以正常工作,主页面的微信分享等也是正常的。

解决思路

首先是以为主页面和子页面同时注入了jssdk的签名信息,是否有可能冲突。经过测试,排除此种可能。通过网络搜索,有网友在此贴中描述的问题与我相似,但没有解决方法 http://www.weixin.com/thread-8022-1-1.html

通过测试可以在主页面进行签名验证,子页面不添加jssdk的签名信息。需要调用jssdk接口时,比如图片选择接口,在jssdk的函数前加parent.,即调用父页面的此函数,经过测试,功能可正常调用。

parent.wx.chooseImage({
success: function (res) {
//upload_success(res.localIds);
}

值得一提的是,微信jssdk看似功能强大,但是bug不少,真正在项目中使用,经不起推敲。虽然解决的此问题,新的问题又来了,canvas导出图片不能跨域。。。最终还是没有用微信的接口来实现需求。

以上所述是小编给大家介绍的微信jssdk在iframe页面失效问题的解决措施,希望对大家有所帮助!

 类似资料:
  • 本文向大家介绍通过伪协议解决父页面与iframe页面通信的问题,包括了通过伪协议解决父页面与iframe页面通信的问题的使用技巧和注意事项,需要的朋友参考一下 我们经常会有父页面与iframe页面的操作,比如 <iframe id = "iframe"></iframe> 这个iframe里面的内容是js写的。如以下代码 以上代码在大多数情况下是对的。但有种情况,即父页面显式的写了document

  • 本文向大家介绍使用微信内嵌H5网页解决JS倒计时失效问题,包括了使用微信内嵌H5网页解决JS倒计时失效问题的使用技巧和注意事项,需要的朋友参考一下  项目要求:将H5商城页面嵌套到公司微信公众号里     项目本身的开发跟移动端网页并无太多差异,只是这昨天遇到一个问题,说是棘手,到也简单。     用户下单后,在选择支付方式页面,有个倒计时的逻辑(从下单时开始计算,24小时后未支付,会有ws自动取

  • 本文向大家介绍详解vue开发中调用微信jssdk的问题,包括了详解vue开发中调用微信jssdk的问题的使用技巧和注意事项,需要的朋友参考一下 起因 微信分享网址时无法分享图片,这个问题需要用jssdk去解决。其实开始的时候时可以看到图片的,但后来微信禁止了。所以只能使用jssdk去解决。 普通网页开发很简单,但是使用vue或其他前端框架开发spa单页面webapp的时候就会有问题了。只要url发

  • 本文向大家介绍微信小程序new Date()方法失效问题解决方法,包括了微信小程序new Date()方法失效问题解决方法的使用技巧和注意事项,需要的朋友参考一下 iOS系统对js中的new Date()方法有格式要求 正确写法应该是 而实际应该过程中日期格式大部分都是2019-07-24这种,所以在实际应用过程中需要用正则对字符串进行预处理 在小程序开发过程中用到一个日期转换方法,然而苹果手机就

  • 我们有h5版的页面,为了快速实现小程序,我们用小程序的webview嵌套了h5,但是有些功能需要借助小程序的能力,文档上写的可以wx.miniProgram.postMessage. 但是需要引入微信的jssdk,还要有下面的配置 我们只是一个通用的h5页面,并没有公众号,没有appid这些东西,请问这种情况可以用jssdk吗?

  • 本文向大家介绍解决layer.open后laydate失效的问题,包括了解决layer.open后laydate失效的问题的使用技巧和注意事项,需要的朋友参考一下 如果你的open方式是1(html)的话这样是可以的, 如果是2(iframe)方式打开,你把注入的代码写在打开的界面就可以了不用这样写,open的参数type是有区别的,所以请注意: 今天在开发项目时候使用到了laydate,按照官方