如果我的应用程序不支持浏览器(我的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/