2012-04-29 5 views
0
function run_battle() { 

if(battlenow.length>0) { 
var div = document.getElementById('show_battle'); 
    $("#show_battle").animate({ scrollTop: $("#show_battle").prop("scrollHeight") -  $('#show_battle').height() }, 100); 
var attempt = battlenow.shift(); 
div.innerHTML += attempt; 
    $("#show_battle").animate({ scrollTop: $("#show_battle").prop("scrollHeight") - $('#show_battle').height() }, 100); 
setTimeout("run_battle()",800); 
    } 
} 

Это то, что у меня есть до сих пор. Он отлично работает в firefox. Однако в Chrome это вообще не работает. Я использую JQuery 1.7.1, поэтому я использую .prop вместо .attr.JQuery Прокрутите вниз в Firefox и Chrome

Баттленовый массив такой.

battlenow.push('Alan hit Joe<br><br>'); 
battlenow.push('Joe fainted<br><br>Battle Over'); 

Если это помогает.

спасибо.

ответ

0

Вот код, который я использую, который работает во всех браузерах, чтобы перейти к определенному элементу. Этот код прокручивает минимальное количество, чтобы получить элемент на экране, вам может понадобиться что-то другое. Обратите внимание на проверку для WebKit браузеров:

(function($) { 

    $.fn.scrollMinimal = function() { 

    var cTop = this.offset().top; 
    var cHeight = this.outerHeight(true); 
    var windowTop = $(window).scrollTop(); 
    var visibleHeight = $(window).height(); 

    if (cTop < windowTop) { 
     $(jQuery.browser.webkit ? "body": "html") 
     .animate({'scrollTop': cTop}, 'slow', 'swing'); 
    } else if (cTop + cHeight > windowTop + visibleHeight) { 
     $(jQuery.browser.webkit ? "body": "html") 
     .animate({'scrollTop': cTop - visibleHeight + cHeight}, 'slow', 'swing'); 
    } 
    }; 

}(jQuery)); 

Вызывается как:

$('#actions').scrollMinimal(); 
+0

Я пробовал уже. Мой «show_battle» div находится внутри другого div. Когда я использую этот код, он прокручивает родительский div, а не тот, который я хочу. – AlanPHP

+0

Я использую это для окна чата, чтобы прокрутить до последнего сообщения, которое является div внутри div, так что это определенно работает. Наверное, я не понимаю, что ты видишь. Если вы хотите попасть в нижнюю часть div, вы можете создать div-заполнитель сразу после целевого, а затем вместо этого перейти к разделителю-заполнителю. – Bill

+0

Все еще не работает в Chrome. – AlanPHP

Смежные вопросы