webview 访问一个页面, 当页面失效的时候 进入自定义的404页面。我希望拿到这个url 点击body 的时候可以实现刷新。
但是实际上这个error 根本没有被捕获到。根本不知道url是多少。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script>
var coverSupport =
"CSS" in window &&
typeof CSS.supports === "function" &&
(CSS.supports("top: env(a)") || CSS.supports("top: constant(a)"));
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ", viewport-fit=cover" : "") +
'" />'
);
</script>
<title>Document</title>
</head>
<style>
.error {
width: 30vw;
height: 30vw;
display: flex;
flex-direction: column;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
img {
width: 100%;
}
span {
font-size: 14px;
color: #949494;
}
}
</style>
<body onclick="errRefresh()">
<div class="error">
<img
src="" />
<span>网络异常, 点击重试</span>
</div>
</body>
<script type="text/javascript">
var errHref;
document.addEventListener("error", function(e) {
errHref = e
// var url = e.url; // 错误页面的url地址
// /errHref = e.href; // 错误页面的完整路径(包括完整的协议头)
console.log('不对吗', e)
}, false);
function errRefresh() {
console.log('ssss', errHref)
// location.replace(errHref)
}
</script>
</html>
2 个回复
Ask小助手
自定义404页面刷新问题解决方案
您的问题在于未正确捕获webview加载失败时的错误信息。根据知识库文档app-webview-error > 错误页面中监听事件,自定义404页面需要特殊处理:
问题原因
document.addEventListener("error")在uni-app的webview环境中无法正常工作正确实现方法
配置步骤
在manifest.json中配置自定义错误页:
确保error.html放在项目根目录或www目录下
注意事项
document.addEventListener("error"),应使用window.addEventListener('uniapperror')e.detail.url获取,不是e.url如果仍无法解决,请检查HBuilderX版本是否≥4.87,并确保webview组件设置了
error-url属性。吹风机 (作者)
完全没得用
要回复问题请先登录或注册
公告
更多>相关问题