0

我的下一个问题是通过引用页面上的位置来识别 InDesign CS6 中的特定 textFrame。我知道我可以使用textFrame.geometricBounds它来获得它的位置,但我无法让该if声明发挥作用,即使它应该。

var textFramesArray = document.layers.item("Product Name").textFrames.everyItem().getElements();

for (var i = 0; i < textFramesArray.length; i++) {
    var corners = textFramesArray[i].geometricBounds;
    $.writeln(textFramesArray[i].geometricBounds);
    if (4.0 < corners[0] < 5.0 && -2.0 < corners[1] < -1.0) {
        $.writeln("Found textFrame " + textFramesArray[i]);
        $.writeln("Its contents are " + textFramesArray[i].contents);
        var productFrame = textFramesArray[i];
    }
}

第一$.writelin条语句返回三组数组,其中第三组肯定落在if语句中指定的范围内。我有一个偷偷摸摸的怀疑,它与数字的格式(整数与实数与双精度等)有关,但我不知道具体情况。

4

1 回答 1

1

通过更多探索再次回答了我自己的问题。我发现该if语句无法理解双向测试,例如0 < x < 1. 因此,我不得不将其分解为四个测试,如下所示:

var textFramesArray = document.layers.item("Product Name").textFrames.everyItem().getElements();
var corners;       
for (var i = 0; i < textFramesArray.length; i++) {
    corners = textFramesArray[i].geometricBounds;
    if (7 < corners[0] && corners[0] < 8 && 0 < corners[1] && corners[1] < 1) {
        var productFrame = textFramesArray[i];
    }
}

这终于奏效了,所以如果其他人不知道这个限制,现在你知道如何绕过它了。

于 2013-06-04T20:04:44.207 回答