1

我有一个网站,对公众不可见,我在多个位置使用安全破解器和矩阵字段。在正常加载的页面上,一切都很好。但是当矩阵字段出现在叠加层中(使用颜色框)时,不会创建矩阵菜单 div。

使用 FireBug 单步执行代码,问题似乎在于:

var $body = $(document.body);

没有正确设置 $body (也许这是覆盖加载的竞争条件?)。因此,当它到达 matrix.js 中的这段代码时:

obj.menu.$ul = $('<ul id="matrix-menu" />').appendTo($body).css({
    opacity: 0,
    display: 'none'
});

$body 无法解析,因此菜单无法附加到任何地方。我想我已经修复了它,但想检查一下我是否应该担心我会破坏其他任何东西。如果我将上面的代码更改为:

obj.menu.$ul = $('<ul id="matrix-menu" />').appendTo($(document.body)).css({
    opacity: 0,
    display: 'none'
});

一切似乎都很好。有没有更好的方法来解决这个问题?

4

1 回答 1

1

如果 Matrix 字段在第一次初始化时没有高度,它会将其大部分初始化内容搁置,假设它默认隐藏或位于辅助发布选项卡上。这减少了初始页面加载时间,还解决了一些需要知道其单元格内 DOM 元素尺寸的单元格类型(文本、资产,可能还有其他)的问题。

Matrix 将在展开或单击其选项卡时自动恢复其初始化,但如果您在“发布”页面之外使用 Matrix并将其隐藏,则需要自己触发该初始化恢复:

for (var i = 0; i < Matrix.instances; i++)
{
    Matrix.instances[i].initRowsIfVisible();
}
于 2013-05-13T16:55:28.397 回答