吹风机
吹风机
  • 发布:2026-01-07 16:59
  • 更新:2026-01-08 09:00
  • 阅读:43

自定义404页面怎么刷新当前页面?

分类:uni-app

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>
2026-01-07 16:59 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

自定义404页面刷新问题解决方案

您的问题在于未正确捕获webview加载失败时的错误信息。根据知识库文档app-webview-error > 错误页面中监听事件,自定义404页面需要特殊处理:

问题原因

  1. document.addEventListener("error") 在uni-app的webview环境中无法正常工作
  2. 错误事件对象结构与普通H5不同

正确实现方法

// 在自定义404页面(error.html)中  
<script>  
  // 必须使用这个特定事件监听  
  window.addEventListener('uniapperror', function(e) {  
    // 获取失败URL  
    const failedUrl = e.detail.url;  

    function errRefresh() {  
      // 重新加载原始URL  
      window.location.href = failedUrl;  
    }  

    // 绑定点击事件  
    document.body.onclick = errRefresh;  
  }, false);  
</script>

配置步骤

  1. 在manifest.json中配置自定义错误页:

    {  
    "plus": {  
    "errorPage": {  
      "404": "/error.html"  
    }  
    }  
    }
  2. 确保error.html放在项目根目录或www目录下

注意事项

  • 不要使用document.addEventListener("error"),应使用window.addEventListener('uniapperror')
  • 错误信息通过e.detail.url获取,不是e.url
  • 此方法仅适用于App平台,Web平台需通过服务器配置404页面

如果仍无法解决,请检查HBuilderX版本是否≥4.87,并确保webview组件设置了error-url属性。

内容为 AI 生成,仅供参考
吹风机

吹风机 (作者)

完全没得用

要回复问题请先登录注册