一些背景
我们在Adobe Illustrator CC 2022中使用产品标签设计。此脚本的目的是根据用户选择将我们的公制值转换为英制值:ML到FL OZ或G到OZ。数学/转换部分工作正常。
我需要什么指引
- 我需要确定用户是否有:*
1.选择文本框架本身。
1.用户是否将光标置于文本框架内或是否选择了文本的一部分。
1.以上两种情况是否都不是。
所包含的代码片段确实适用于上面的1和2,但列表中的3号我似乎无法正确处理。它似乎完全忽略了嵌套的“Catch”。我对Try/Catch块不是很熟悉,尝试过if/then语句,但没有成功。
有没有办法让脚本不忽略嵌套的catch或者,有没有其他的解决办法?
有问题的代码片段(为了便于参考,我已经包括了注解):
if (app.documents.length > 0)
{
var $docRef = app.activeDocument;
var $rslt = "I am the replacement value";
try
{
//check if the selected object is a "Text Frame"
if($docRef.selection[0].typename == "TextFrame")
{
$docRef.selection[0].contents = $rslt;
}
}
catch(e1)
{
alert("e1 :"+e1.message); // "e1: undefined is not an object"
//DO THE FOLLOWING: Ignore the error and try the nested check
try
{
//check if the parent object of selected is a "Story"... thus editable text within a Text Frame
if($docRef.selection.parent.typename == "Story")
{
$docRef.selection.contents = $rslt;
}
}
catch(e2)
{
alert("e2 :"+e2.message); // "e2: undefined is not an object"
//DO THE FOLLOWING: Assume that no ediatble text is selected, create a Text Frame and populate it with $rslt value
alert("Creating new Text Frame");
//MY PROBLEM: It ignores this Catch step completely...
}
}
}
1条答案
按热度按时间bnl4lu3b1#
它可能是这样的:
或者: