1

数時間探しても答えが見つからなかったので、私はあなたに来ることにしました。ユーザーがスクロールすると離れてから戻ってくるiframeがあります。scrolltoを使用して正しい位置に戻したいと思います。このiframeのxとyを変数に保存/エクスポート/追加するにはどうすればよいですか、それとも不可能ですか?

4

2 に答える 2

0

この jquery プラグインを使用して、x、y 変数を Cookie に保存できます: https://github.com/carhartl/jquery-cookie

例:

$(window).unload(function() {
    //save scroll on unload
    $.cookie('scroll_x',$("#yourElementId").scrollLeft());
    $.cookie('scroll_y',$("#yourElementId").scrollTop());
});
$(document).ready(function() {
    //restore scroll when the dom is ready
    var x = $.cookie('scroll_x');
    var y = $.cookie('scroll_y');
    if( x != null ) $("#yourElementId").scrollLeft(x);
    if( y != null ) $("#yourElementId").scrollTop(y);
});

スクロールしたい要素のIDは「yourElementId」です。

于 2012-08-25T05:09:34.677 に答える
0

必要な最初のステップは、x/y コンポーネントを取得することです。elem.scrollTopこれは、 と を使用して実現できますelem.scrollLeft。これらをローカル ストレージに記録し、onscrollイベントを使用してスクロールを検出します。次に、次のページの読み込みで、記録された x/y コンポーネントをiframeのelem.scrolLTopおよびに割り当てます。elem.scrollLeft

var frame = document.getElementById("frame");

frame.contentWindow.addEventListener("scroll", function(){
    sessionStorage.setItem("coordinates", this.scrollLeft + "," + this.scrollTop);
}, false);

window.addEventListener("load", function(){
    if(sessionStorage.getItem("coordinates")){
        var coordinates = sessionStorage.getItem("coordinate").split(",");
        frame.scrollLeft = coordinates[0];
        frame.scrollTop = coordinates[1];
    }
}, false);

注: テストされておらず、エラーを解決するための変更なしでは動作しないことが保証されています。

編集: iframe が を処理しないことに気付いたonscrollので、その回避策を見つける必要があります...

于 2012-08-25T04:25:41.767 に答える