InDesign UXP插件中page.name返回undefined的原因排查
问题原因
在Adobe InDesign的UXP API中,Page对象没有name属性,这就是调用page.name返回undefined的核心原因。而documentOffset、textFrames等属于Page对象的标准内置属性,因此可以正常获取。
你想要获取的页面自定义名称(即页面面板中可编辑的名称),对应的API属性是page.label。
解决方案
将代码中的page?.name替换为page?.label即可获取页面的自定义名称。如果需要获取系统默认的页面标识(比如“第1页”这类自动生成的名称),可以使用page.displayName属性。
修改后的代码片段:
document.getElementById("collectTextFramesBtn")?.addEventListener("click", async () => { try { if (!app.documents || app.documents.length === 0) { console.warn("⚠️ No document is open."); return; } const doc = app.activeDocument; for (let i = 0; i < doc.pages.length; i++) { const page = doc.pages[i]; console.log(`➡️ Iterating page ${i + 1}`); console.log("page.label (自定义名称):", page?.label); // 正确获取自定义名称 console.log("page.displayName (系统默认名称):", page?.displayName); // 获取系统默认显示名称 console.log("documentOffset:", page?.documentOffset); // works fine } } catch (err) { console.error("❌ Error accessing page data:", err); } });
补充说明
- 如果页面未设置自定义名称,
page.label会返回空字符串,而非undefined。 - 若要设置页面名称,直接给
page.label赋值即可,比如page.label = "封面"。
内容的提问来源于stack exchange,提问作者Omri Developer
相关产品推荐
相关产品推荐

