项目场景:
公司的一个项目,要求用微信小程序实现对pdf文件,预览签字,用的uniapp开发
pdf预览这部分,用的pdf.js插件实现。
由于微信小程序中webview展示页面不能放在项目本地,要求远端请求网页。而且webview会铺满整个页面,导致我的签字按钮只能放在远端的H5页面实现,当时因为偷懒,直接把H5放在了后台前端项目里(用的vue实现),就直接在请求的vue路径页面下,又嵌了一个iframe,iframe里嵌入pdf预览签字的页面,
问题描述
点击签字按钮,跳转小程序签字页面
首先页面引入了JS-SDK 和 uniSDK,
<!-- 微信 JS-SDK 如果不需要兼容小程序,则无需引用此 JS 文件。 -->
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<!-- uni 的 SDK,必须引用。 -->
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.0.1.52.js"></script>
设置按钮监听:
document.addEventListener('UniAppJSBridgeReady', function() {
document.querySelector('.btn-list').addEventListener('click', function(evt) {
uni.navigateBack();
uni.postMessage({
data: {
'fileSetId': fileSetId
}
});
});
});
在微信开发者工具调试一切正常,页面能跳转,参数也能接收,但在真机上就是不能跳转,不触发UniAppJSBridgeReady
原因分析:
由于预览签字的pdfH5页面,是嵌入到vue页面的iframe原因导致的,导致事件不触发文章来源:https://uudwc.com/A/Yn5gP
解决方案:
将pdf预览的H5页面整个单独放在服务器,配置一下nginx请求访问,问题解决文章来源地址https://uudwc.com/A/Yn5gP