gpt4 book ai didi

javascript - Next.js:向 IE 访问者显示警告消息

转载 作者:行者123 更新时间:2023-12-02 16:09:59 27 4
gpt4 key购买 nike

我的 Next.js 应用无法在 IE 上运行。

它显示空白屏幕并在控制台上抛出语法错误。

没关系,IE 即将停产,但我想阻止 IE 在检测到浏览器时执行单行代码。

来自 this answer , 我可以检查浏览器是否是 IE:

if (window.document.documentMode) {
// IE detected

document.write('IE is not supported. Please use a modern browser!')
}

用户不会看到空白屏幕,而是会看到网站无法使用上述消息的原因。

这种方法有两个问题:

  1. 将上面的代码放在 Next.js 的什么地方?
  2. 如何在执行代码时终止应用程序,或者这可能吗?

如有任何帮助,我们将不胜感激。

最佳答案

您不应依赖 Next.js 应用程序在已弃用/不受支持的浏览器上显示消息,因为代码本身可能会在这些浏览器上崩溃(缺少 polyfill 等)

相反,正确显示有关过时浏览器的消息警告的唯一方法是异步加载 JS 脚本,它不使用 ES5+ 功能,因此它可以在所有浏览器中工作(而且,它不会减慢关闭你的应用程序或增加包大小,因为它是异步的)。

据我所知,_document.js 是最早可以检查浏览器的地方,因为它在第一个页面请求时呈现一次。

您可以使用外部 CDN,或在 public 文件夹中创建一个 checkBrowser.js 文件。

这是我的解决方案。

页面/_document.js

export default class MyDocument extends Document {

...

render() {
return (
<Html>
<Head>
<script async src="/scripts/checkBrowser.js" />
</Head>

...

</Html>
)
}
}

公共(public)/脚本/checkBrowser.js

// if browser is IE, redirect

if (window.document.documentMode) {

window.location.replace('/outdated.html')
}

public/outdated.html

<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Unsupported browser</title>
</head>
<body>
<p>Internet Explorer (IE) is not supported. Please use a modern browser.</p>
</body>
</html>

来源:Script from CDN , Redirect approach , 还有@YuZhou 分享这些链接

关于javascript - Next.js:向 IE 访问者显示警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68278880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com