0

私は最近、Dojo フレームワークの使用を開始し、Web サイト用のフローティング ペインを作成する必要があります。グーグルとスタックオーバーフローの両方で検索した後、非常に良い例に出くわしました:

jsfiddle

しかし問題は、フローティング ペインを最小化してから、下部の小さなタブをクリックして再度表示するたびに、ペインのサイズが大きくなることです。jsfiddle の例でも確認できますが、変更は 2px のようになるため、複数回繰り返す必要があります。

誰かがこの奇妙な振る舞いを手伝ってくれますか? JavaScript コード:

dojo.require("dojo.dnd.move");
dojo.require("dojox.layout.FloatingPane");

dojo.ready(function() {

    var ParentConstrainedFloatingPane = dojo.declare(dojox.layout.FloatingPane, {

        postCreate: function() {
            this.inherited(arguments);
            this.moveable = new dojo.dnd.move.parentConstrainedMoveable(
                this.domNode, {
                    handle: this.focusNode,
                    area: "content",
                    within: true
                }
            );                            
        }

    });

    var BoxConstrainedFloatingPane = dojo.declare(dojox.layout.FloatingPane, {

        postCreate: function() {
            this.inherited(arguments);
            this.moveable = new dojo.dnd.move.boxConstrainedMoveable(
                this.domNode, {
                    handle: this.focusNode,
                    box: {l: 10, t: 10, w: 400, h: 400},
                    within: true
                }
            );                            
        }

    });

    var ConstrainedFloatingPane = dojo.declare(dojox.layout.FloatingPane, {

        postCreate: function() {
            this.inherited(arguments);
            this.moveable = new dojo.dnd.move.constrainedMoveable(
                this.domNode, {
                    handle: this.focusNode,
                    constraints: function() {
                        var coordsBody = dojo.coords(dojo.body());
                        // or
                        var coordsWindow = {
                            l: 0,
                            t: 0,
                            w: window.innerWidth,
                            h: window.innerHeight                            
                        };

                        return coordsWindow;
                    },
                    within: true
                }
            );                            
        }

    });

    var searchboxNode = dojo.byId("searchbox");
    var floatingPane = new ParentConstrainedFloatingPane({
        title: "A floating pane",
        resizable: true,
        dockable: true,
        //constrainToContainer: true,
        style: "position:absolute;top:40px;left:40px;width:160px;height:100px;"       
    }, searchboxNode);

    floatingPane.startup();
});

EDIT#1 : 公式のバグ チケットを発行しました。詳細については、次のリンクから確認できます: http://bugs.dojotoolkit.org/ticket/16598

4

1 に答える 1

2

これは dojox フローティングペインのバグです。報告されているかどうかはわかりませんが、クラスを直接使用した場合にも発生します

dojox.layout.FloatingPane 

それ以外の

ParentConstrainedFloatingPane

また、Dojo のバージョンを変更した場合 (検証のために 1.8.3 を試しました)、面倒な修正を望まない場合は、修正されたかどうかを Dojo に報告してみてください。

于 2013-01-18T05:48:37.760 に答える