支持旧浏览器的“角度方式”是什么?
默认情况下,一个角14应用程序(用angular-cli构建)只支持20%的浏览器(browsersl.ist)。尽管阅读了相关的文档,但我还不清楚如何启用对旧浏览器的支持。
改进型.browserslistrc
默认情况下,角-cli (v14)生成此配置:
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%。然而,更老的设备显示的是“死亡的白色屏幕”。
> 0.2%, not dead其他一些相关档案:
tsConfig.json
在这里,角cli (v14)默认设置如下:
...
"target": "es2020",
"module": "es2020",
"lib": [
"es2020",
"dom"
],
...那么,我该修改这个吗?我看到了使用单独的tsConfig.json来提供es6支持的方法。
polyfills.js
这个文件应该为旧的浏览器提供“填充”。然而,根据我所读到的,这里我们应该只附加一些与角无关的东西,因为任何与角度相关的东西都会被框架自动追加。我的理解正确吗?
这就是为什么自动生成的polyfills.ts在没有任何倾斜的情况下,使下面的部分为空)。
// .... other stuff
/***************************************************************************************************
* BROWSER POLYFILLS
*/
// ... stuff after polyfills发布于 2022-11-17 21:14:35
TLDR:“脚本”优化是罪魁祸首!
缩小问题范围:
我在ios12浏览器(iPhone6S设备)上遇到了一些问题,这是相当古老的,但是我无法让它工作,尽管我启用了.browserslistrc中的所有东西
last 20 iOS major versions--configuration=development正在工作:
我注意到本地版本在旧浏览器上运行得很好,但一旦部署就不会了。(我以前不能那么轻易地测试)。
因此,在构建了用于开发的模式之后,部署的版本也起了作用。
--optimization=false也在工作:
然后,我注意到了用于生产的构建,但是禁用优化也有效。因此,我开始寻找引起问题的特定标志。
解决方案:
在深入研究优化标志之后,事实证明scripts优化是问题所在。因此,做以下工作是有效的:
‘Package.json’
"optimization": {
"scripts": false, <- DISABLED
"styles": {
"minify": true,
"inlineCritical": true
},
"fonts": true
},通知不支持的浏览器:
在任何情况下,如果浏览器不受支持,那么显示一些相关消息是很好的。当角引导失败时,下面就会这样做。
<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>https://stackoverflow.com/questions/74475996
复制相似问题