У меня проблема с некоторым унаследованным кодом - это приложение на стене, похожее на FB, где зарегистрированные пользователи могут публиковать темы. Большая часть кода - JS и jQuery, и я мало знаю об этом.
При публикации темы тема добавляется в базу данных, но на экране не отображается тема, пока она не будет обновлена, но она должна отображаться сразу - когда я смотрю в Инструментах разработчика, я получаю сообщение об ошибке:
Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.
Когда я разворачиваю ошибку, я получаю:
curCSS @ jquery-1.8.3.js:6825
jQuery.extend.css @ jquery-1.8.3.js:6782
isHidden @ jquery-1.8.3.js:6587
defaultPrefilter @ jquery-1.8.3.js:8797
Animation @ jquery-1.8.3.js:8697
doAnimation @ jquery-1.8.3.js:9034
jQuery.extend.dequeue @ jquery-1.8.3.js:1895
(anonymous function) @ jquery-1.8.3.js:1938
jQuery.extend.each @ jquery-1.8.3.js:611
jQuery.fn.jQuery.each @ jquery-1.8.3.js:241
jQuery.fn.extend.queue @ jquery-1.8.3.js:1931
jQuery.fn.extend.animate @ jquery-1.8.3.js:9044
jQuery.fn.(anonymous function) @ jquery-1.8.3.js:9129
(anonymous function) @ script.js:52
fire @ jquery-1.8.3.js:974
self.fireWith @ jquery-1.8.3.js:1084
done @ jquery-1.8.3.js:7803
callback @ jquery-1.8.3.js:8518
Строка 52 в script.js:
$('#loadpage').prepend($(response).fadeIn('slow'));
Я надеюсь, что это не что-то зафиксированное в jQuery 1.9.x и выше, поскольку обновление на данный момент слишком много вещей, чтобы сделать его жизнеспособным, но я понятия не имею, с чего начать поиск и устранение этого
Я нашел три вопроса с одной и той же ошибкой, но не смог получить какие-либо идеи из ответов, вероятно, из-за милаха знаний JS.
Сделали некоторый прогресс - я обновился до jQuery 1.9.1, и на этот раз это произошло, но ошибка изменилась. На этот раз ошибка стала:
Uncaught TypeError: Cannot set property 'cur' of undefined
указывая на ту же строку в script.js
Найден быстрый поиск Неиспользуемый TypeError с fadeIn в jQuery 1.9, который рекомендовал изменить строку:
$('#loadpage').prepend($(response).fadeIn('slow'));
в
$('#loadpage').prepend($(response).show());
Когда я делаю это, ошибок больше нет, но он все еще не работает корректно - при публикации новой публикации в список добавляется новая запись, но это дубликат предыдущего сообщения. Так, например,
Post 1
Post 2
Post 3
Если я опубликую новое сообщение, которое называется Post 4, оно будет отображаться как:
Post 1
Post 1
Post 2
Post 3
Когда я обновляю его, он корректно отображается как сообщение 4 и т.д., поэтому он чувствует себя как прогресс, но все еще не совсем там.
Ответ определяется в:
$('#post').click(function(){
var a = $("#wm").val();
if(a != "")
{
var keepID = $('#keepID').val();
var posted_on = $('#posted_on').val();
$.post("wall.php?value="+a+'&x='+keepID+'&p='+posted_on, {
}, function(response){
//console.log(response);
//$('#load').prepend($(response).fadeIn('slow'));
$('#load').prepend($(response).show());
$("#wm").val("");
});
}
});
Этот script ужасен!