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问题没有回应的原因,嗯?
答案 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))