如何使用OOP JavaScript实现记忆上次选中的单选按钮功能
单选按钮记忆上次选择功能实现方案
你所用的是Adobe平台的ExtendScript脚本,我们直接用内置的首选项存储接口实现持久化记忆,无需额外读写本地文件,以下是修复并增加记忆功能后的完整代码:
var doc = app.activeDocument; var choice; // 定义唯一的首选项存储键名,避免和其他脚本冲突 var PREF_KEY = "gemini_save_last_selected_location"; var w = new Window("dialog"); w.text = "请选择Gemini保存位置"; var g = w.add("group"); var a = g.add("radiobutton", undefined, "MN"); var b = g.add("radiobutton", undefined, "WA"); var c = g.add("radiobutton", undefined, "CA"); var d = g.add("radiobutton", undefined, "TX"); var e = g.add("radiobutton", undefined, "Remote"); var button = w.add("button", undefined, "确认"); var radiobuttons = [a, b, c, d, e]; // 初始化默认选中:优先读上次保存的选项,没有则默认选MN a.checkedState = true; choice = "MN"; try { var lastSelected = app.preferences.getPrefAsString(PREF_KEY); for (var j = 0; j < radiobuttons.length; j++) { if (radiobuttons[j].text === lastSelected) { radiobuttons[j].checkedState = true; choice = lastSelected; break; } } } catch (e) { // 第一次运行没有存储值时走默认逻辑,不报错 } // 修复原代码闭包参数拼写错误(原大写I改为小写i) for (var i = 0; i < radiobuttons.length; i++) { (function (i) { radiobuttons[i].onClick = function () { choice = radiobuttons[i].text; }; })(i); } // 确认按钮点击事件:保存当前选择到首选项后关闭窗口 button.onClick = function () { app.preferences.savePrefAsString(PREF_KEY, choice); w.close(1); } w.show();
核心修改点
- 新增首选项读写逻辑,脚本启动时自动读取上次选中的选项并默认选中
- 新增确认按钮的点击保存逻辑,用户点击确认后自动把当前选择写入首选项持久化存储
- 修复原代码中闭包参数拼写错误导致的点击单选按钮无法正确赋值选项的问题
- 新增异常捕获逻辑,第一次运行无存储值时不会报错,自动走默认选中规则
内容的提问来源于stack exchange,提问作者Bryan Bishop Pagenkopf
相关产品推荐
相关产品推荐

