Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Indesign脚本GREP在应用超链接目标时出错_Javascript_Adobe Indesign_Extendscript - Fatal编程技术网

Javascript Indesign脚本GREP在应用超链接目标时出错

Javascript Indesign脚本GREP在应用超链接目标时出错,javascript,adobe-indesign,extendscript,Javascript,Adobe Indesign,Extendscript,在InDesign中偶然发现了一个关于脚本、GREP和超链接的非常奇怪的问题。我正在尝试编写一个脚本(js),它可以自动创建一本大书(电子书)的超链接。我已经成功地编写了一个词汇表超链接脚本,但这是为章节参考。其想法是使用GREP搜索来查找与标题样式匹配的所有单词(在本例中为下划线,20pt),然后在该点插入超链接目的地。奇怪的是,当脚本运行时,它会弄乱从上一行查找文本的GREP搜索结果 var doc=app.activeDocument; doc.hyperlinkTextDestina

在InDesign中偶然发现了一个关于脚本、GREP和超链接的非常奇怪的问题。我正在尝试编写一个脚本(js),它可以自动创建一本大书(电子书)的超链接。我已经成功地编写了一个词汇表超链接脚本,但这是为章节参考。其想法是使用GREP搜索来查找与标题样式匹配的所有单词(在本例中为下划线,20pt),然后在该点插入超链接目的地。奇怪的是,当脚本运行时,它会弄乱从上一行查找文本的GREP搜索结果


var doc=app.activeDocument;
doc.hyperlinkTextDestinations.everyItem().remove();
doc.hyperlinkTextSources.everyItem().remove();
doc.hyperlinks.everyItem().remove();
app.findgrepreferences=app.changegrepreferences=null;
app.findgrepreferences.pointSize=20;
app.findgrepreferences.underline=true;
app.findgrepreferences.findWhat='';
var results=app.activeDocument.findGrep();
对于(var i=0;i}
将文本从结尾改为开头。为循环反转您的
,或者(更容易)更改查找结果的返回顺序:

var results = app.activeDocument.findGrep(true);
(有关布尔值的含义,请参见此处)


它从开始到结束不起作用的原因是,您正在将
结果
列表存储到一个变量中,并且在以后更改文本时,它不会得到更新。不幸的是,“插入超链接目的地”就是这样做的:它在运行的文本中插入一个隐藏字符。从那时起,所有以前找到的位置都不再可信,因此您必须重新执行
findGrep
命令(并跳过第一个找到的结果)–或从头到尾处理结果,这样您所做的任何更改都不会影响您仍然需要处理的文本。

改为从头到尾更改文本。为
循环反转您的
,或者(更容易)更改查找结果的返回顺序:

var results = app.activeDocument.findGrep(true);
(有关布尔值的含义,请参见此处)

它从开始到结束不起作用的原因是,您正在将
结果
列表存储到一个变量中,并且在以后更改文本时,它不会得到更新。不幸的是,“插入超链接目的地”就是这样做的:它在运行的文本中插入一个隐藏字符。从那时起,所有以前找到的位置都不再可信,因此您必须重新执行
findGrep
命令(并跳过第一个找到的结果)–或者从头到尾处理结果,这样您所做的任何更改都不会影响您仍然需要处理的文本