jQuery BBQ使用jQuery 2生成错误

时间:2014-04-15 04:24:29

标签: javascript jquery html jquery-bbq

jQuery BBQ noob问题:我已经下载了jQuery BBQ 1.2.1,我试图将它与jQuery 2.1.0一起使用。烧烤工作的意义在于它可以做我想做的事情,但我在控制台中发现了一条错误信息。我已将其跟踪到似乎是兼容性问题。这是一个产生错误的示例HTML页面:

<!DOCTYPE HTML>
<html>
    <head>
        <title>example</title>
    </head>
    <body>
        example
    </body>
    <script src="../js/lib/jquery-2.1.0.min.js"></script>
    <script src="../js/lib/jquery.ba-bbq.min.js"></script>
</html>

在Firefox中,控制台错误为TypeError: f is undefined。在Chrome中,错误有所不同:Uncaught TypeError: Cannot read property 'msie' of undefined

我注意到jQuery BBQ很老了。是否有更新的jQuery BBQ版本?或者是否有更新的替换库?

更新

我正在使用jQuery BBQ,因为谷歌搜索向我发送了之前回答的问题:Parsing URL hash/fragment identifier with JavaScript。我试图解决的真正问题与链接问题相同:响应URI的哈希部分中的更改并解析该片段。

事实证明,就我的目的而言(到目前为止),我可以消除jQuery BBQ并编写几行代码来获取哈希字符串(并删除哈希符号):

    $(window).bind('hashchange', function() {
        var hashString = window.location.hash || '';
        hashString = hashString.replace("#",'');
        myEventHandler(hashString);
    });

这样就可以了。它非常简单,而且模块依赖性较小,因此是双赢的。我想这就是为什么对jQuery-BBQ问题没有回应的原因,嗯?

2 个答案:

答案 0 :(得分:3)

我很高兴你的问题解决了(1年前!)。但对于遇到此问题的其他人:

正如您在this answer中看到的那样,此问题是由$ .browser引起的,该版本在1.3版中已弃用,在1.9版中已删除。

但你可以很简单地解决这个问题。只需打开jquery bbq源并搜索f.msie(用于h = f.msie)并将其替换为:

( navigator.appName == 'Microsoft Internet Explorer') ? true : false

(现在你必须有h = ( navigator.appName == 'Microsoft Internet Explorer') ? true : false

答案 1 :(得分:0)

对我有用的语法是:

h = ( navigator.appName == 'Microsoft Internet Explorer' ? true : false)

或者如果用作&#34; if&#34;切换...

 (h = ( navigator.appName == 'Microsoft Internet Explorer' ? true : false))