我的下一个问题是通过在页面上引用其位置来识别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
语句中指定的范围。我有一种潜在的怀疑,它与数字的格式有关(整数与真实与双重等),但我不知道具体细节。
答案 0 :(得分: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];
}
}
这最终有效,所以如果其他人不知道这个限制,现在你知道如何绕过它。