@@ -273,44 +273,56 @@ export default class Runtime extends Manager {
273
273
scriptNum . runNum += 1 ;
274
274
}
275
275
} ;
276
- chrome . tabs . onUpdated . addListener ( ( tabId , changeInfo ) => {
277
- if ( changeInfo . status === "loading" ) {
278
- runScript . delete ( tabId ) ;
279
- }
280
- } ) ;
281
276
chrome . tabs . onRemoved . addListener ( ( tabId ) => {
282
277
runScript . delete ( tabId ) ;
283
278
} ) ;
284
279
// 给popup页面获取运行脚本,与菜单
285
280
this . message . setHandler (
286
281
"queryPageScript" ,
287
- ( action : string , { tabId } : any ) => {
282
+ async ( action : string , { tabId } : any ) => {
288
283
const tabMap = scriptMenu . get ( tabId ) ;
289
284
const matchScripts = runScript . get ( tabId ) || [ ] ;
290
- const scriptList : ScriptMenu [ ] = [ ] ;
291
- matchScripts . forEach ( ( item ) => {
292
- const menus : ScriptMenuItem [ ] = [ ] ;
293
- if ( tabMap ) {
294
- tabMap . get ( item . script . id ) ?. forEach ( ( scriptItem ) => {
295
- menus . push ( {
296
- name : scriptItem . request . params [ 1 ] ,
297
- accessKey : scriptItem . request . params [ 2 ] ,
298
- id : scriptItem . request . params [ 0 ] ,
299
- sender : scriptItem . request . sender ,
300
- channelFlag : scriptItem . channel . flag ,
285
+ const allPromise : Promise < ScriptMenu > [ ] = Array . from (
286
+ matchScripts ,
287
+ async ( [ , item ] : [ number , { script : Script ; runNum : number } ] ) => {
288
+ const menus : ScriptMenuItem [ ] = [ ] ;
289
+ if ( tabMap ) {
290
+ tabMap . get ( item . script . id ) ?. forEach ( ( scriptItem ) => {
291
+ menus . push ( {
292
+ name : scriptItem . request . params [ 1 ] ,
293
+ accessKey : scriptItem . request . params [ 2 ] ,
294
+ id : scriptItem . request . params [ 0 ] ,
295
+ sender : scriptItem . request . sender ,
296
+ channelFlag : scriptItem . channel . flag ,
297
+ } ) ;
301
298
} ) ;
302
- } ) ;
299
+ }
300
+ const script = await this . scriptDAO . findById ( item . script . id ) ;
301
+ if ( ! script ) {
302
+ return {
303
+ id : item . script . id ,
304
+ name : item . script . name ,
305
+ enable : item . script . status === SCRIPT_STATUS_ENABLE ,
306
+ updatetime : item . script . updatetime || item . script . createtime ,
307
+ hasUserConfig : ! ! item . script . config ,
308
+ runNum : item . runNum ,
309
+ menus,
310
+ } ;
311
+ }
312
+ return {
313
+ id : script . id ,
314
+ name : script . name ,
315
+ enable : script . status === SCRIPT_STATUS_ENABLE ,
316
+ updatetime : script . updatetime || script . createtime ,
317
+ hasUserConfig : ! ! script ?. config ,
318
+ runNum : item . runNum ,
319
+ menus,
320
+ } ;
303
321
}
304
- scriptList . push ( {
305
- id : item . script . id ,
306
- name : item . script . name ,
307
- enable : item . script . status === SCRIPT_STATUS_ENABLE ,
308
- updatetime : item . script . updatetime || item . script . createtime ,
309
- hasUserConfig : ! ! item . script . config ,
310
- runNum : item . runNum ,
311
- menus,
312
- } ) ;
313
- } ) ;
322
+ ) ;
323
+
324
+ const scriptList : ScriptMenu [ ] = await Promise . all ( allPromise ) ;
325
+
314
326
const backScriptList : ScriptMenu [ ] = [ ] ;
315
327
const sandboxMenuMap = scriptMenu . get ( "sandbox" ) ;
316
328
this . runBackScript . forEach ( ( item ) => {
@@ -355,20 +367,23 @@ export default class Runtime extends Manager {
355
367
if ( ! ( sender . url && sender . tabId ) ) {
356
368
return ;
357
369
}
358
-
370
+ if ( sender . frameId === undefined ) {
371
+ // 清理之前的数据
372
+ runScript . delete ( sender . tabId ) ;
373
+ }
359
374
const filter : ScriptRunResouce [ ] = this . matchUrl (
360
375
sender . url ,
361
376
( script ) => {
362
377
// 如果是iframe,判断是否允许在iframe里运行
363
378
if ( sender . frameId !== undefined ) {
364
379
if ( script . metadata . noframes ) {
365
- return false ;
380
+ return true ;
366
381
}
367
382
addRunScript ( sender . tabId ! , script ) ;
368
- return script . status = == SCRIPT_STATUS_ENABLE ;
383
+ return script . status ! == SCRIPT_STATUS_ENABLE ;
369
384
}
370
385
addRunScript ( sender . tabId ! , script ) ;
371
- return script . status = == SCRIPT_STATUS_ENABLE ;
386
+ return script . status ! == SCRIPT_STATUS_ENABLE ;
372
387
}
373
388
) ;
374
389
0 commit comments