在UXP开发中使用Photoshop API修改文本层遇阻求助
Photoshop插件修改文本层内容解决方案
你的错误是因为Photoshop插件API要求所有修改文档状态的操作必须在模态作用域内执行,直接修改文本层内容属于这类操作,所以需要用executeAsModal来包裹核心逻辑。
修改后的完整代码如下:
async function changeLayerText() { const { app } = require("photoshop"); const { executeAsModal } = require("photoshop").core; try { // 进入模态作用域执行文档修改操作 await executeAsModal(async () => { const layers = app.activeDocument.layers; const targetLayer = layers.getByName("bat3_name"); // 检查是否为文本层,避免非文本层报错 if (targetLayer.kind === "textLayer") { const newText = "AN Other"; targetLayer.textItem.contents = newText; } else { console.error("目标图层不是文本层"); } }, { commandName: "修改文本层内容" }); // commandName会显示在PS的历史记录中 } catch (error) { console.error("修改失败:", error); } } document.getElementById("changeText").addEventListener("click", changeLayerText);
关键说明:
executeAsModal是异步方法,所以外层函数要加async,内部用await等待执行完成- 第一个参数是执行修改逻辑的回调函数,必须是异步的
- 第二个参数的
commandName用于在Photoshop的历史记录中标识这个操作,方便用户回溯 - 添加了文本层类型检查,避免因选中非文本层导致的额外错误
- 用
try/catch捕获执行过程中的异常,方便调试
内容的提问来源于stack exchange,提问作者benpomeroy9
相关产品推荐
相关产品推荐

