@@ -242,23 +242,30 @@ function ScriptEditor() {
242
242
} ;
243
243
const saveAs = ( script : Script , e : editor . IStandaloneCodeEditor ) => {
244
244
return new Promise < void > ( ( resolve ) => {
245
- try {
246
- chrome . downloads . download (
247
- {
248
- url : URL . createObjectURL (
249
- new Blob ( [ e . getValue ( ) ] , { type : "text/javascript" } )
250
- ) ,
251
- saveAs : true , // true直接弹出对话框;false弹出下载选项
252
- filename : `${ script . name } .user.js` ,
253
- } ,
254
- ( ) => {
245
+ chrome . downloads . download (
246
+ {
247
+ url : URL . createObjectURL (
248
+ new Blob ( [ e . getValue ( ) ] , { type : "text/javascript" } )
249
+ ) ,
250
+ saveAs : true , // true直接弹出对话框;false弹出下载选项
251
+ filename : `${ script . name } .user.js` ,
252
+ } ,
253
+ ( ) => {
254
+ /*
255
+ chrome扩展api发生错误无法通过try/catch捕获,必须在api回调函数中访问chrome.runtime.lastError进行获取
256
+ var chrome.runtime.lastError: chrome.runtime.LastError | undefined
257
+ This will be defined during an API method callback if there was an error
258
+ */
259
+ if ( chrome . runtime . lastError ) {
260
+ // eslint-disable-next-line no-console
261
+ console . log ( "另存为失败: " , chrome . runtime . lastError ) ;
262
+ Message . error ( `另存为失败: ${ chrome . runtime . lastError . message } ` ) ;
263
+ } else {
255
264
Message . success ( "另存为成功" ) ;
256
- resolve ( ) ;
257
265
}
258
- ) ;
259
- } catch ( err ) {
260
- Message . error ( `另存为失败: ${ err } ` ) ;
261
- }
266
+ resolve ( ) ;
267
+ }
268
+ ) ;
262
269
} ) ;
263
270
} ;
264
271
const menu : EditorMenu [ ] = [
0 commit comments