1
在我的劇本,我有它設置與此類似:的InDesign:如何正確使用placeXML()
// "element" is an xml element in the structure that contains text
// "frame" is one page item
element.placeXML(frame);
這個奇妙的作品。它將從元素中提取文本並將其放入頁面中的一個框架中。但是,在粘貼到框架中之後,我需要對文本進行一些操作,並且由於在此問題上解釋太長的原因,使用mapTagsToStyles不是一種選擇。我想,這應該是一件容易的事,所以我嘗試下面的代碼:
element.placeXML(frame);
// after the xml text gets placed, the frame becomes a text frame...
if (frame instanceof TextFrame){
// some code here
}
,但如果語句返回false,除非框架已經是一個TextFrame是運行腳本之前,這也是不可取XML元素是圖像的事件。由於圖像不支持「parentStory」等屬性,因此會導致錯誤。
看來它只是整個腳本完成後的文本框架。換句話說,在函數被調用的瞬間,XML不會被放置。它似乎是異步行爲,但我不知道如何在這種情況下使用「onload」事件偵聽器。
// say "frame" is an empty rectangle frame...
// inserting text will change it into a text frame.
// This function, although written here, does not execute here.
element.placeXML(frame);
if (frame instanceof TextFrame){
// instanceof will return [object Rectangle],
// because placeXML has not inserted any text yet.
}
// end of script. ---------
// the placeXML() function executes here.
是否有更正確的使用此功能的方法?這是一個預期的效果,還是它在延伸腳本中的一個小故障?
雖然這是針對特定頁面項目的一種有趣的方式,placeXML()函數仍是一個問題。 例如,frame是[對象Rectangle]。 placeXML插入文本後,它變爲[對象TextFrame]。但是由於placeXML在腳本完成之前不會執行,框架仍然是[對象矩形]。 我會在主帖中添加更多示例。 –
我認爲樣品確實會有幫助。我自己試了一下,不能面對這個問題。你是否禁用屏幕重繪? – Loic
不是故意的,大聲笑。我會嘗試從我的巨大腳本中挑選出來,看看我是否可以在一個新的腳本中以較小的比例複製問題。我會讓你知道發生了什麼... –