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 を使用しています。そのため、.attr の代わりに .prop を使用しています。

バトルナウの配列はこんな感じ。

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

それが役に立ったら。

ありがとうございました。

4

1 に答える 1

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();
于 2012-04-29T20:51:32.250 に答える