jQuery BBQ noob问题:我已经下载了jQuery BBQ-1.2.1,我正在尝试将其与jQuery 2.1.0一起使用。BBQ的工作原理是它做我想做的事情,但我注意到控制台中有一条错误消息。我已经找到了一个兼容性问题。下面是一个产生错误的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有更新版本吗?或者有更新的替换库吗?
更新
我之所以使用jQueryBBQ,是因为谷歌搜索向我发送了一个以前回答过的问题:用JavaScript解析URL哈希/片段标识符。我试图解决的真正问题与链接的问题相同:响应URI哈希部分的更改并解析该片段。
事实证明,出于我的目的(到目前为止),我可以消除jQueryBBQ,并写几行代码来获取哈希字符串(并删除哈希符号):
$(window).bind('hashchange', function() {
var hashString = window.location.hash || '';
hashString = hashString.replace("#",'');
myEventHandler(hashString);
});
因此,这将在目前起作用。它非常简单,而且少了一个模块依赖,因此是双赢的。我想这就是为什么jQuery BBQ问题没有得到回应的原因,嗯?
我很高兴你的问题得到了解决(一年前!)。但对于其他有这个问题的人来说:
正如您在这个答案中所看到的,这个问题是由$.brower引起的,它在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
)
对我有效的语法是:
h = ( navigator.appName == 'Microsoft Internet Explorer' ? true : false)
或者如果用作"if"开关的一部分。。。
(h = ( navigator.appName == 'Microsoft Internet Explorer' ? true : false))