Mar*_*šeň 2 javascript internet-explorer svelte
我们希望避免在我们的 svelte/sapper 应用程序中出现不受支持的浏览器的问题。
我想警告用户我们用 Sapper/Svelte 编写的应用程序与 Internet Explorer 不兼容。它可以是简单的纯文本消息或重定向到某个错误页面。
现在我有这个代码
<head>
...
<!-- IE10+ will switch to IE9 behaviour and will respect IE HTML conditional tags -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
...
</head>
<body>
<![if !IE]>
<div id='sapper'>%sapper.html%</div>
%sapper.scripts%
<![endif]>
<!--[if IE]>
<h1 style="color: #333; font-family: 'Arial'; font-size: 18px; padding: 24px 18px; text-align: center;">
We do not support Internet Explorer.
</h1>
<p style="font-size: 46px; text-align: center; padding: 12px 0;">:/</p>
<![endif]-->
</body>
Run Code Online (Sandbox Code Playgroud)
在template.html
文件中。这是否足以检测所有 IE 浏览器(使用旧引擎)?
我在想,检测 IE 可能不足以进行适当的浏览器兼容性检测。是否有一些我可以使用的通用 Svelte 兼容性检测功能?
我仍然想要一些最后的代码块,如果应用程序在运行时因某些不支持的功能(本地存储、扩展运算符、服务工作者等)而崩溃,那么我想显示消息或将用户重定向到错误页面。
更新:我使用带有meta
标签的IE 条件标签。如果需要更好地检测浏览器功能,我会以在应用程序初始化期间执行的测试的形式实现它。
汇总工兵模板包括对“传统模式”的支持。它没有记录在任何地方,但它使用 babel 为旧浏览器创建单独的 javascript 文件。如果你使用这个 ES6 语法应该不会引起问题,如果 babel 配置得当。您的站点应该在没有 Service Worker 的情况下仍能正常运行。对于其他功能,例如本地存储,我会根据需要测试特定功能并尝试正常失败。
如果你好奇这里是 Sapper 用来检测旧浏览器并加载适当的 js 文件的代码:
(function() {
try {
eval("async function x(){}");
var main = "${main}"
} catch (e) {
main = "${legacy_main}"
};
var s = document.createElement("script");
try {
new Function("if(0)import('')")();
s.src = main;
s.type = "module";
s.crossOrigin = "use-credentials";
} catch (e) {
s.src = "${req.baseUrl}/client/shimport@${build_info.shimport}.js";
s.setAttribute("data-main", main);
}
document.head.appendChild(s);
}());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1404 次 |
最近记录: |