Files
Smart-Farm/uniapp/uni-app/test_fix.html
2025-12-22 17:13:05 +08:00

82 lines
3.2 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>测试uni.openSetting修复</title>
</head>
<body>
<h1>uni.openSetting修复测试</h1>
<button id="testCheckAuth">测试checkAuth函数</button>
<div id="result"></div>
<script>
// 模拟uni-app环境
window.uni = {
getSetting: () => Promise.resolve([null, { authSetting: {} }]),
authorize: () => Promise.resolve([new Error("模拟授权失败"), null]),
showModal: (options) => {
console.log("显示模态框:", options);
// 模拟用户点击确认
setTimeout(() => {
if (options.success) {
options.success({ confirm: true });
}
}, 100);
return Promise.resolve();
},
hideLoading: () => console.log("隐藏加载中"),
showToast: (options) => {
console.log("显示提示:", options);
document.getElementById("result").innerHTML = `提示: ${options.title}`;
return Promise.resolve();
}
};
// 模拟H5环境
console.log("当前环境: H5");
// 简化版的checkAuth函数基于我们修复后的逻辑
async function checkAuth({ type = "userLocation", tip = "" } = {}) {
// H5环境下直接返回true因为H5环境不需要小程序授权
// 特殊处理地理位置权限
if (type === 'userLocation') {
return new Promise((resolve, reject) => {
// 检查浏览器是否支持地理位置API
if (!navigator.geolocation) {
uni.showToast({
title: '您的浏览器不支持地理位置功能'
});
reject(new Error('Geolocation not supported'));
return;
}
// 尝试获取当前位置
navigator.geolocation.getCurrentPosition(
() => resolve(true),
(error) => {
uni.showToast({
title: '获取位置失败,请检查浏览器位置权限设置'
});
reject(error);
}
);
});
}
// 其他类型的权限在H5环境下直接返回true
return Promise.resolve(true);
}
// 测试函数
document.getElementById("testCheckAuth").addEventListener("click", async () => {
try {
const result = await checkAuth({ type: "userLocation" });
document.getElementById("result").innerHTML = "测试成功: " + result;
} catch (error) {
document.getElementById("result").innerHTML = "测试失败: " + error.message;
}
});
</script>
</body>
</html>