【问题标题】:Dojo floating panesDojo 浮动窗格
【发布时间】:2013-01-17 18:43:14
【问题描述】:

我最近开始使用 Dojo 框架,并且必须为网站制作浮动窗格。在google和stackoverflow上搜索后,我遇到了一个很好的例子:

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

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    这是一个dojox浮动窗格错误,我不知道它是否报告过,但是当您直接使用该类时也会发生这种情况

    dojox.layout.FloatingPane 
    

    而不是

    ParentConstrainedFloatingPane
    

    而且如果您更改了 dojo 版本(尝试 1.8.3 来验证),所以除非您愿意自己动手​​修复它,否则请尝试将它也报告给 dojo,看看它是否已修复。

    【讨论】:

    • 感谢您的澄清!!!浏览错误跟踪器,看看我是否可以提出某种修复。将在此处发布结果。
    • 似乎至少在 1.9.4 中已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多