1

编辑

我最初将这个问题表述为好像浏览器检测导致了我的问题,但这仅仅是由不正确的语法引起的。

  1. 确保关闭所有括号(它们应该总是成对出现!)
  2. 给你的代码一些空间(它会更容易发现错误!)
  3. 通过将凌乱的条件表达式移动到变量中来清理您的if-statements
  4. 使用语义(理想情况下是明确的)变量名——这可以更容易理解你的代码试图做什么

例如,以下内容:

const layoutStyles = document.querySelector('#layoutStyles');
const testElement = document.createElement('div');

let supportsFlex = testElement.style.flex !== undefined;
let supportsFlexFlow = testElement.style.flexFlow !== undefined;

if (supportsFlex && supportsFlexFlow) {

  layoutStyles.setAttribute('href', 'flex-layout.css');

} else {

  layoutStyles.setAttribute('href', 'float-layout.css');
}

在技​​术上等同于:

const cond = document.querySelector('#cond');
const tstEl = document.createElement('div');
if (tstEl.style.flex!==undefined&&tstEl.style.flexFlow!==undefined)cond.setAttribute('href','flex-layout.css');
else cond.setAttribute('href','float-layout.css');

但后者更难阅读和理解。因此也更难调试和重构,更容易意外引入错误

正如贡献者很久以前在他们的答案中所写的那样,学习语言基础知识很重要;先爬再跑,先走再跑!


出于某种原因,这部分 javascript 阻止了我之前编写的所有其他函数。如果我把它拿出来,它们就会工作,当我把它放回去时,它们就会停止工作。

如果有人能找出问题所在,请告诉我!我真的不太擅长 JS,所以我不是 100% 确定我在这里做什么。

好吧,我以此为参考;http://www.javascriptkit.com/javatutors/navigator.shtml

这是我的代码:

//4th batch shows a warning box upon finding a visitor with an outdated browser
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
 var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);
 var oprversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 
if (ffversion<11 || ieversion<9 || oprversion<11.6)
 function browserwarning()
 {
 document.getElementById('oldbrowser').style.display="inherit";
 }
 //END OF 4TH BATCH
4

2 回答 2

0

有很多{没有对应的}

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { 
    var ffversion = new Number(RegExp.$1);
}
else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
    var ieversion = new Number(RegExp.$1);
}
else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { 
    var oprversion=new Number(RegExp.$1);
}

if (ffversion < 11 || ieversion < 9 || oprversion < 11.6) {
       document.getElementById('oldbrowser').style.display="inherit";
}

我刚刚关闭了所有括号。

无论如何,我建议你在这个:http ://www.quirksmode.org/js/detect.html

于 2013-02-19T12:53:55.563 回答
0

您忘记了 if 语句中的一些右括号和函数无效。此代码将在没有语法错误的情况下工作:

//4th batch shows a warning box upon finding a visitor with an outdated browser
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
    var ffversion = new Number(RegExp.$1); // capture x.x portion and store as a number
} else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
    var ieversion = new Number(RegExp.$1); // capture x.x portion and store as a number
} else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);
    var oprversion = new Number(RegExp.$1); // capture x.x portion and store as a number
}

if (ffversion < 11 || ieversion < 9 || oprversion < 11.6) {
    document.getElementById('oldbrowser').style.display = "inherit";
}

但我强烈建议您努力学习如何使用和编写 javascript 代码。看起来你正在尝试用中文写一封信,虽然你甚至不知道它们的符号......

于 2013-02-19T12:54:24.120 回答