Skip to content
On this page

页面报错/显示异常等问题简易排查 ​

大部分页面报错/显示异常等问题不是 bug,是由于 MB 不支持一些新特性导致的。这是一个如何排查此类问题的简易教程。 如果通过以下手段发现不是新特性导致的问题而是 bug,或者无法判断,可以在 QQ 群和微信群中询问。

1. 下载 release 包 ​

release 包请加 QQ 群获取,群号点击这里。

2. 使用对应的简易浏览器排查错误 ​

找到对应 DLL 版本的简易浏览器并打开问题页面,点击工具栏按钮 Test,再点击 打开 devtools,使用 devtools 进行调试,需要一定的前端调试基础。

3. 找到可疑的新特性并查询浏览器支持版本 ​

假如我们经过调试找到了可疑的新特性,以下两个网站可以帮助我们查看是否是新特性:

这里举两个例子。

直接使用 JS 新特性 ?? 导致报错 ​

假设页面中有以下代码

html
<script>
    const foo = null ?? '打印内容';
    console.log(foo);
</script>

此时 devtools-console 报错:Uncaught SyntaxError: Unexpected token ?,点击右边的出错文件和行号,发现页面中有上述代码。

前往上面说的两个网站对 ?? 进行搜索,发现 chrome 85 才支持 ?? 语法,现在可以确定不是 bug,而是 MB 不支持新语法导致的问题。

直接使用 CSS 新特性 grid 导致显示异常(MB49) ​

假设页面有以下代码

html
<style>
    .wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(3, 100px);   
    }
    .box {
        margin: 20px;
        background-color: grey;
    }
</style>
<div class="wrapper">
    <div class="box box1">One</div>
    <div class="box box2">Two</div>
    <div class="box box3">Three</div>
    <div class="box box4">Four</div>
 </div>

此时打开 devtools-elements,点击出问题的元素,右侧 styles 面板显示 grid 的三个配置为黄色感叹号,内容为 invalid property value。

前往上面说的两个网站对 grid 进行搜索,发现 chrome 57 才支持 CSS grid 布局,是 MB49 不支持新语法导致的问题。

4. 尝试解决问题 ​

假如出问题的页面是不受控制(无法修改源代码)的页面,基本没法解决,可以期待 MB 出新版本以支持这些新特性。

假如出问题的页面是自己控制的页面,能修改源代码,则可以采取以下方式解决,需要一些前端基础。

解决 JS 相关问题 ​

语法转换问题 ​

JS 的新语法特性大部分都是语法糖,这意味着可以使用 babeljs 等工具进行语法转换,比如上面 ?? 可以使用工具自动转换为旧版法。如果是单页面应用,一般都会使用脚手架,在内部集成了语法转换工具,可以查看对应的文档进行配置。

假如使用 vue-cli 工具进行开发,可以配置 package.json 中的 browserslist 字段,如何配置详情参考vue-cli兼容性。 假如使用 vite,可以参考vite兼容性

新的特性问题 ​

JS 的部分语法提供了新的功能,如 ResizeObserver 就无法转换,此时需要寻找对应的 polyfill 库来兼容实现,请使用搜索引擎或 NPM 寻找这些库。

假如使用 vue-cli 或者 vite,也可以使用对应的 polyfill 方案,上面的文档链接中也有介绍。

解决 CSS 相关问题 ​

一般采用替代方案,如上面 grid 无法支持,使用传统方式进行样式布局。