如果我的应用程序不支持浏览器(我的IE基本上不超过11​​),我想重定向到静态html页面。

这是我的index.html起始页:

<!doctype html>
<html lang="en">

<head>
    <script>
        document.addEventListener("DOMContentLoaded", function (event) {
            if (IECheck() &&  && !window.location.href.includes('notsupported.html')) {
               location.assign( window.location.href + 'assets/notsupported.html');
            }
        });

        function IECheck() {
            var ua = window.navigator.userAgent;

            var msie = ua.indexOf('MSIE ');
            var ie11 = ua.indexOf('Trident');
            return msie > 0 || ie11 > 0;
        }

    </script>
    <meta charset="utf-8" />
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">
    <base href="/">

    <meta content="width=device-width, initial-scale=1.0" name="viewport" />



</head>

<body>
    <div class="container body">
        <app-component>

        </app-component>
    </div>
</body>

</html>


现在,它检测到浏览器版本正常。但是,它没有重定向到notsupported.html页面,而是无限循环,将'notsupported.html'连接到浏览器地址栏中的我的根URL:
http://localhost:4200/notsupported.htm
htpp://本地主机:4200 / notsupported.htmnotsupported.htm
htpp://本地主机:4200 / notsupported.htmnotsupported.htmnotsupported.htm

等等...

可能与ng serve的用法有关吗?我尚未在集成服务器上尝试过。还是我在上面做错了什么?

编辑

按照以下建议,我将notsupported.html页面移至资产文件夹。但是重定向仍然没有发生

最佳答案

您将需要添加url检查以及类似

if (IECheck()  && !window.location.href.includes('notsupported.html')) {
               location.assign( window.location.href + 'notsupported.html');
            }


无限循环的原因是即使不支持的加载页面DOMContentLoaded将被触发并且
将再次检查IECheck并再次将notsupported.html附加到url,同样的事情一次又一次地重复

关于javascript - 如果不支持浏览器,则将 Angular 重定向到特定页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57954227/

10-09 22:12