在我的index.html网站上,我正在执行功能检查。旧的浏览器用户将被重定向到一个网站,告诉他们更新浏览器:
@import
有效。问题是功能检查后,我正在使用功能。而且旧的浏览器可能会生成错误消息。
避免错误消息的最佳解决方案是什么?
答案 0 :(得分:0)
您可以简单地将new Function
代码放在else
块中:
if (typeof Function == 'undefined') {
location.href = 'old-browsers.html';
} else {
var f = new Function('return true;');
}
答案 1 :(得分:0)
编辑2:当要调用该功能时,检查该功能是否受支持将是一种更加简洁的设计。这样可以更轻松地处理多个JS文件。
如果所有代码都在一个JS文件中,则我发布的初始方法可以很好地工作,但是在运行多个JS文件时可能会引起问题(在兼容性检查之前可能会调用一个函数)。
if(function1) { //if function1 is supported
function1();
}
else {
location.href = 'some_link.hmtl';
}
//function2 could be in a separate JS file
if(function2) { //if function2 is supported
function2();
}
else {
location.href = 'some_link.hmtl';
}
如果将所有代码都放在单个<script>
标签中,则您的代码应该可以正常工作而不会引发错误。
编辑:结果证明代码也不需要位于同一脚本标签中;您的方法应该可以正常工作。
Javascript是一种 解释性 语言,而不是 编译的 语言,这意味着将按以下方式对语句进行求值:一个在运行时。因此,如果浏览器太旧,则应满足if条件之一,location.href
行将立即执行,而无需查看其后的函数调用。
<!-- feature check -->
<script>
if (typeof Function == 'undefined') {
// this line will immediately redirect, and the code below it will not be reached
location.href = 'old-browsers.html';
}
//using the functions
var f = new Function('return true;');