首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular14:支持旧浏览器的官方方法是什么?

Angular14:支持旧浏览器的官方方法是什么?
EN

Stack Overflow用户
提问于 2022-11-17 13:07:16
回答 1查看 72关注 0票数 2

支持旧浏览器的“角度方式”是什么?

默认情况下,一个角14应用程序(用angular-cli构建)只支持20%的浏览器(browsersl.ist)。尽管阅读了相关的文档,但我还不清楚如何启用对旧浏览器的支持。

改进型.browserslistrc

默认情况下,角-cli (v14)生成此配置:

代码语言:javascript
复制
last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR

我已将其修改如下。覆盖率应从20%提高到90%。然而,更老的设备显示的是“死亡的白色屏幕”。

代码语言:javascript
复制
> 0.2%, not dead

其他一些相关档案:

tsConfig.json

在这里,角cli (v14)默认设置如下:

代码语言:javascript
复制
...
    "target": "es2020",
    "module": "es2020",
    "lib": [
      "es2020",
      "dom"
    ],
...

那么,我该修改这个吗?我看到了使用单独的tsConfig.json来提供es6支持的方法。

polyfills.js

这个文件应该为旧的浏览器提供“填充”。然而,根据我所读到的,这里我们应该只附加一些与角无关的东西,因为任何与角度相关的东西都会被框架自动追加。我的理解正确吗?

这就是为什么自动生成的polyfills.ts在没有任何倾斜的情况下,使下面的部分为空)。

代码语言:javascript
复制
// .... other stuff
/***************************************************************************************************
 * BROWSER POLYFILLS
 */

// ... stuff after polyfills
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-17 21:14:35

TLDR:“脚本”优化是罪魁祸首!

缩小问题范围:

我在ios12浏览器(iPhone6S设备)上遇到了一些问题,这是相当古老的,但是我无法让它工作,尽管我启用了.browserslistrc中的所有东西

代码语言:javascript
复制
last 20 iOS major versions

--configuration=development正在工作:

我注意到本地版本在旧浏览器上运行得很好,但一旦部署就不会了。(我以前不能那么轻易地测试)。

因此,在构建了用于开发的模式之后,部署的版本也起了作用。

--optimization=false也在工作:

然后,我注意到了用于生产的构建,但是禁用优化也有效。因此,我开始寻找引起问题的特定标志。

解决方案:

在深入研究优化标志之后,事实证明scripts优化是问题所在。因此,做以下工作是有效的:

‘Package.json’

代码语言:javascript
复制
"optimization": {
  "scripts": false, <- DISABLED
  "styles": {
    "minify": true,
    "inlineCritical": true
    },
   "fonts": true
},

通知不支持的浏览器:

在任何情况下,如果浏览器不受支持,那么显示一些相关消息是很好的。当角引导失败时,下面就会这样做。

代码语言:javascript
复制
<html>
<!-- other stuff .. -->
<script>
  function handleUnsupportedBrowsers() {
    var appRoot = document.getElementsByTagName('app-root')[0];
    if (appRoot && appRoot.innerHTML === '') {
      appRoot.innerHTML = '<<h1>Unsupported Browser</h1>' +
        '<p>Please use a modern  browser!</p>';
    }
  }
</script>
<body onload="handleUnsupportedBrowsers()">
  <app-root></app-root>
</body>
</html>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74475996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档