uni-app 安卓平台使用原生隐私弹框时 message 中的 a 标签配置本地 html 文件打不开
uni-app 安卓平台使用原生隐私弹框时 message 中的 a 标签配置本地 html 文件打不开
用户协议及隐私政策
为了更好的保障您的合法权益,请您阅读并同意以下协议《用户协议1》
- 百分百路径没有错
- 打了多次自定义基座,都没效果
项目 | 信息 |
---|---|
HbuilderX版本 | 4.15 |
hrefLoader 可取值:system-表示使用系统浏览器打开(注意此模式下不支持项目内路径)
如果需要打开项目内路径,需要修改为 default
相关文档已更新 https://uniapp.dcloud.net.cn/tutorial/app-privacy-android.html#模板提示框
使用原生提示框是否勾选
勾选的
绝了!真的服了,被uniapp打服了。最后用:https://ext.dcloud.net.cn/plugin?id=5581,这个插件解决了。这也让进一步明白:uniapp 真如它吹的那么好吗?
直接用网络地址,简单粗暴
{
“version”: “2”,
“prompt”: “template”,
“title”: “用户协议及隐私政策”,
“message”: " 进入应用前,你需先同意<a href="./static/a.html">《服务协议》,否则将退出应用。"
}
{
“version”: “3”,
“prompt”: “template”,
“title”: “用户协议及隐私政策”,
“message”: " 进入应用前,你需先同意<a href=“static/a.html”>《服务协议2》,否则将退出应用。"
}
我本地测试,这两种写法 不需要自定义基座,均可以正常显示
这我就不清楚了。我确实是打了很多次包都没有效果
回复 1***@qq.com: 可以提供一个可以复现问题的最简示例。我进一步确认一下
我跟你放的位置一样,为啥我的就跳转不过去
回复 DCloud_Android_DQQ: 大佬有时间看一下吗
回复 2***@qq.com: 提供可以复现问题的最简示例
回复 DCloud_Android_DQQ:我也是一样的问题
回复 1***@qq.com: 提供可以复现问题的最简示例
回复 DCloud_Android_DQQ: 很奇怪 用你的示例竟然可以!
回复 2***@qq.com: “hrefLoader”: “default"才可以,官方示例的"hrefLoader”: "system "打不开
我按文档说的,将hrefLoader 设置为system 后,a标签就打不开了
提供可以复现问题的最简示例
在 uni-app 中,若你在安卓平台上使用原生隐私弹框并希望在 message
中通过 a
标签配置本地 HTML 文件,可能会遇到一些问题,因为原生组件通常不支持直接加载本地 HTML 文件。不过,你可以通过一些变通的方法来实现类似功能。以下是一个使用 web-view
组件来展示本地 HTML 文件并结合原生弹框的示例代码。
步骤 1: 创建本地 HTML 文件
首先,在你的 static
文件夹中创建一个 HTML 文件,例如 privacy.html
:
<!-- static/privacy.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy</title>
</head>
<body>
<h1>Privacy Policy</h1>
<p>This is the privacy policy content.</p>
<!-- Add more content as needed -->
</body>
</html>
步骤 2: 使用 web-view
组件展示 HTML 文件
在你的页面中使用 web-view
组件来加载这个 HTML 文件:
<template>
<view>
<button @click="showPrivacyPolicy">Show Privacy Policy</button>
<web-view v-if="showWebView" src="/static/privacy.html"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
showWebView: false
};
},
methods: {
showPrivacyPolicy() {
// Show a native dialog first (this is just a placeholder)
uni.showModal({
title: 'Privacy Notice',
content: 'We need to show you our privacy policy. Do you agree?',
success: (res) => {
if (res.confirm) {
this.showWebView = true;
} else if (res.cancel) {
this.showWebView = false;
}
}
});
},
hideWebView() {
this.showWebView = false;
}
}
};
</script>
<style>
/* Add any necessary styles */
</style>
说明
- HTML 文件:
privacy.html
包含了隐私政策的内容。 - 页面组件:使用
web-view
组件来加载本地的privacy.html
文件。 - 逻辑控制:通过点击按钮触发
showPrivacyPolicy
方法,首先显示一个原生对话框询问用户是否同意查看隐私政策。如果用户同意,则显示web-view
组件加载 HTML 文件;如果用户取消,则不显示。
这种方法虽然不直接在原生弹框中加载 HTML,但通过结合原生弹框和 web-view
组件,实现了用户点击后查看本地 HTML 文件的功能。这种方式在跨平台开发中是常见的变通方法。