所以我试图让一些javascript代码工作,它将按页面上的日期过滤结果列表。
它在Linux和Mac上都可以在FF中完美运行,Chrome适用于Mac,但我在Linux上的Chrome和Chromium上获得了一个非常奇怪的结果(Ubuntu 10.10)。以下是相关代码:
$(document).ready(function() {
currentURL = window.location.pathname + "/order=vote/genres=/dates=";
$(".date").click(function() {
var thisButton = $(this);
if (thisButton.html() == 'Today') {
var dateText = 'today';
} else if (thisButton.html() == 'All') {
var dateText = 'all';
} else {
var dateText = '';
}
console.log(currentURL);
var splitURL = currentURL.split('dates=');
var filterDateURL = splitURL[0] + 'dates=' + dateText;
$.ajax({
url: filterDateURL,
success: function(response) {
$("#show_container").html($("#show_container", response).html());
$("#genre_filters").html($("#genre_filters", response).html());
currentURL = filterDateURL;
// add selected to this button, remove from other date filters
thisButton
.addClass('selected')
.removeClass('unselected')
.siblings("a")
.removeClass('selected')
.addClass('unselected');
}
});
return false;
});
});
currentURL上的split()似乎在Linux上的Chrome中不起作用。
所以,如果我正在构建的网址应该是:'/ order = vote / genres = / dates = today'
我实际上也许得到:'/ order = vote / genres = / dates = alldates = today'。
我在函数外面有currentURL,因为其他过滤器使用相同的变量。
因此,用户可以一次按顺序,流派和日期进行过滤,最后得到currentURL结尾'/ order = distance / genres = GenreX / dates = today'。
最奇怪的部分是在使用split方法之前由于'console.log(currentURL)'行而发生的事情。我把它放在那里测试它正在使用的currentURL值,当我观察控制台时,这段代码完美无缺。
但是,如果我关闭控制台,它会再次被打破!因此,如果我注意确保它没有弄乱,那就不会,如果我不看,它会行为不端。
有人有什么想法吗?
答案 0 :(得分:0)
尝试在这样的支票中包装console.log():
if (console && console.log){
console.log(currentURL);
}
这将确保在您没有打开控制台时代码不会秘密破解。可能发生的事情是当控制台打开时,console.log正常工作,因为控制台已定义但是当它关闭时,它可能正在尝试在未定义的情况下执行.log,但您永远不会知道,因为您的控制台未打开。真棒Catch22。