0

因此,我正在编写一种新的 JavaScript 算法,代号为 jBam(Javascript 浏览器算法模块),它用于编写一种极其简单的方法来检测浏览器及其版本。我的主要目标是能够编写这个(插入库):

if(IE & version lessThan 9) {
    // IE code for 8 and below
}

目前,进展非常顺利。我可以写

if(browser == IE & version < 9)

所以,回到我最初的问题,我唯一想知道的可能是以某种方式设置一个变量lessThan并将其设置为等于符号<。我已经尝试过可能是最常见的补救措施(var lessThan = <),但当然,这有点太一厢情愿了,也有点太容易了。而且,众所周知,没有什么容易了。有什么建议,也许是我没想到的 JavaScript 保护?

4

1 回答 1

1

我同意@JCOC611,但也有可能您将所有内容都作为对象的一部分,然后也version将对象作为属性,您可以在其中添加一个名为 的方法lessThan,因此您将拥有类似的内容:

var browserStuff = {
    browser: {
        value: "",
        is: function (comparator) {
            if (browserStuff.browser.value == comparator) {
                return true;
            }
            return false;
        }
    },
    version: {
        value: "",
        lessThan: function (comparator) {
            if (browserStuff.version.value < comparator) {
                return true;
            }
            return false;
        }
    },
    init: function () {
        // Do your stuff to determine the browser and its version
        // You need to set browserStuff.version.value and browserStuff.browser.value
        delete browserStuff.init;
    }
}.init();

然后像这样使用它:

if (browserStuff.browser.is("IE")) {

}

或者

if (browserStuff.version.lessThan("7")) {

}

您必须为“大于”和“不等于”等添加更多内容,但这只是开始。

我并不完全建议这样做,因为您可以轻松地使用普通的 Javascript 运算符来完成同样的事情,而冗余代码更少。此解决方案更适合“可读”主题,但绝不是必要或更好的。

于 2012-09-15T02:42:22.067 回答