Здравствуйте! Столкнулся с такой проблемой: в IE 7 не работает AJAX + JQuery скрипт "бесконечной прокрутки" (сама страничка находится http://topnewgames.ru/freelance/). При нажатии на кнопку "Отправить" новые комментарии не появляются, и не отображаются до тех пор, пока страницу не откроют в новой вкладке. При этом проблема явно не в кодировке (известный баг, его фикс не решает описанное). Я думаю, что раз для отображения комментария приходится открывать страницу в новой вкладке (иначе хоть убей, не работает), IE сбрасывает какой-то очень важный параметр именно когда пользователь закрывает вкладку. Может и дико звучит, но я раньше ни с чем подобным не сталкивался, и даже не знаю, в каком направлении копать. Код абсолютно работоспособен, по логике, проблем вообще быть не должно. Подскажите, пожалуйста, почему так происходит?
| Код | // script for endless scrolling using jQuery // demo: http://www.jstoolbox.com/demo/endless/ var engine = {
posts : [], target : null, busy : false, count : 20, action : 'list', render : function(obj){ var xhtml = '<div class="post" id=post_'+obj.real_id+'>'; xhtml += '<div class="content">' + obj.content + '</div>'; xhtml += '<div class="close"><a href="#" onClick="deleteMessage('+obj.real_id+');"><img src="./img/delete.png" class="deleteimg" /></a></div>'; if (obj.posted_at) { xhtml += '<div class="posted_at"><span class="post_date">['+obj.posted_at+']</span></div>'; } xhtml += '</div>'; return xhtml; }, init : function(posts, target){
if (!target) return;
this.target = $(target);
this.append(posts);
var that = this; $(window).scroll(function(){ if ($(document).height() - $(window).height() <= $(window).scrollTop() + 50) { that.scrollPosition = $(window).scrollTop(); that.get(); } }); },
append : function(posts){ posts = (posts instanceof Array) ? posts : []; this.posts = this.posts.concat(posts);
for (var i=0, len = posts.length; i<len; i++) { this.target.append(this.render(posts[i])); }
if (this.scrollPosition !== undefined && this.scrollPosition !== null) { $(window).scrollTop(this.scrollPosition); } },
get : function() {
if (!this.target || this.busy) return;
if (this.posts && this.posts.length) { var lastId = this.posts[this.posts.length-1].id; } else { var lastId = 0; }
this.setBusy(true); var that = this;
$.getJSON('./php/function.php', {'action':this.action,count:this.count, last:lastId,'text':this.search}, function(data){ if (data.length > 0) { that.append(data); } that.setBusy(false); } ); },
showLoading : function(bState){ var loading = $('#loading');
if (bState) { $(this.target).append(loading); loading.show('slow'); } else { $('#loading').hide(); } },
setBusy : function(bState){ this.showLoading(this.busy = bState); } }; function deleteMessage(objid){ if (objid){ $.get('php/function.php',{'action':'delete','msg_id':objid}, function(data){ $('#post_'+objid).remove(); }); } } $(document).ready(function(){ engine.init(null, $("#news")); engine.action = 'list'; engine.get(); $('#loading').ajaxStart(function(){ $(this).html("<b>Loading.... </b><img src='./img/loadingAnimation.gif'></img>"); $(this).show(); }); $('#loading').ajaxStop(function(){ $(this).empty(); $(this).hide(); }); });
|
|