Skip to content

Commit 6352f12

Browse files
committed
支持导出代码为JS
1 parent 1592417 commit 6352f12

5 files changed

Lines changed: 45 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
1. 新增主窗口支持最大化和最小化
66
2. 新增Ctrl+S触发保存
7-
3. 更友好的AI辅助提示
8-
4. 支持自动缓存上次内容(某次忘记保存导致半小时白干才想起来需要这个)
7+
3. 新增更友好的AI辅助提示
8+
4. 新增支持自动缓存上次内容(某次忘记保存导致半小时白干才想起来需要这个)
9+
5. 新增支持导出当前代码为JS
910

1011
# 2.1.1
1112

extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"uuid": "7ca98ae04b7142599ab107e34acc8e5e",
44
"displayName": "嘉立创EDA代码编辑器",
55
"description": "支持中文联想的EDA脚本代码编辑器,支持代码高亮、自动补全、函数提示,AI注释,AI报错分析等功能。",
6-
"version": "2.1.1",
6+
"version": "2.1.2",
77
"publisher": "嘉立创EDA",
88
"engines": {
99
"eda": "^2.2.0"

iframe/main/index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<ul>
1515
<li><button id="run-btn">运行</button></li>
1616
<li><button id="import-btn">导入</button></li>
17+
<li><button id="export-btn">导出</button></li>
1718
<li><button id="load-btn">加载</button></li>
1819
<li><button id="save-btn">保存</button></li>
1920
<li><button id="delete-btn">删除</button></li>
@@ -64,6 +65,7 @@
6465
//加载上次关闭时的缓存
6566
const HistoryCode = eda.sys_Storage.getExtensionUserConfig('editor_value');
6667
editor.setValue(HistoryCode);
68+
6769
// 注册放大缩小代码支持
6870
let currentFontSize = 14;
6971
ACE_ChangeCodeSize(editor, currentFontSize, showToast);
@@ -123,6 +125,10 @@
123125
document.getElementById('import-btn').addEventListener('click', async () => {
124126
ImportFile(editor);
125127
});
128+
//导出JS文件
129+
document.getElementById('export-btn').addEventListener('click', async () => {
130+
ExportFileForJs(editor.getValue(), Date() + '_script.js');
131+
});
126132
//保存到插件
127133
document.getElementById('Ext-btn').addEventListener('click', async () => {
128134
showPluginManagerModal(editor);

iframe/script/Style-Alert.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

iframe/script/User_config/ACE_Config.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,3 +915,38 @@ function injectContextMenuJumpToDocs(editor, fullMethodPaths) {
915915
}, 10);
916916
});
917917
}
918+
919+
/**
920+
* 将文本内容保存为 .js 文件并触发浏览器下载
921+
*
922+
* @param {string} text - 要保存的 JavaScript 源码文本
923+
* @param {string} [filename='script.js'] - 下载的文件名
924+
* @returns {void}
925+
* @throws {TypeError} 如果 text 不是字符串
926+
*/
927+
function ExportFileForJs(text, filename = 'script.js') {
928+
if (text == '') {
929+
showToast('内容不能为空');
930+
return; //我说怎么为空了还是下载,原来是没return,给我气笑了
931+
}
932+
// 确保文件名以 .js 结尾
933+
if (!filename.endsWith('.js')) {
934+
filename += '.js';
935+
}
936+
// 创建 Blob 对象,MIME 类型设为 application/javascript
937+
const blob = new Blob([text], {
938+
type: 'application/javascript;charset=utf-8',
939+
});
940+
// 生成临时 URL
941+
const url = URL.createObjectURL(blob);
942+
// 创建隐藏的 <a> 元素用于触发下载
943+
const link = document.createElement('a');
944+
link.href = url;
945+
link.download = filename; // 设置下载文件名
946+
// 触发点击(必须添加到 DOM 才能在某些浏览器中生效)
947+
document.body.appendChild(link);
948+
link.click();
949+
// 清理:移除元素并释放 URL
950+
document.body.removeChild(link);
951+
URL.revokeObjectURL(url);
952+
}

0 commit comments

Comments
 (0)