@@ -471,7 +471,6 @@ export class RuntimeService {
471471 // 获取content.js和inject.js的脚本注册信息
472472 async getContentAndInjectScript ( ) {
473473 // 黑名单排除
474-
475474 const blacklist = this . blacklist ;
476475 const excludeMatches = [ ] ;
477476 const excludeGlobs = [ ] ;
@@ -506,21 +505,17 @@ export class RuntimeService {
506505 }
507506 }
508507
509- const res = { } as {
510- content : chrome . scripting . RegisteredContentScript ;
511- inject : chrome . userScripts . RegisteredUserScript | null ;
512- } ;
513-
514- // content.js
515- const script : chrome . scripting . RegisteredContentScript = {
508+ const retScript : chrome . userScripts . RegisteredUserScript [ ] = [ ] ;
509+ retScript . push ( {
516510 id : "scriptcat-content" ,
517- js : [ "src/content.js" ] ,
511+ js : [ { file : "src/content.js" } ] ,
518512 matches : [ "<all_urls>" ] ,
519513 allFrames : true ,
520514 runAt : "document_start" ,
515+ world : "USER_SCRIPT" ,
521516 excludeMatches,
522- } ;
523- res . content = script ;
517+ excludeGlobs ,
518+ } ) ;
524519
525520 // inject.js
526521 const injectJs = await this . getInjectJsCode ( ) ;
@@ -529,10 +524,10 @@ export class RuntimeService {
529524 excludeMatches,
530525 excludeGlobs,
531526 } ) ;
532- res . inject = script ;
527+ retScript . push ( script ) ;
533528 }
534529
535- return res ;
530+ return retScript ;
536531 }
537532
538533 // 如果是重复注册,需要先调用 unregisterUserscripts
@@ -556,22 +551,12 @@ export class RuntimeService {
556551 console . error ( "chrome.userScripts.resetWorldConfiguration() failed." , e ) ;
557552 }
558553
559- const [ particularScriptList , generalScriptList ] = await Promise . all ( [
560- // registerScripts
561- this . getParticularScriptList ( ) ,
562- // content.js, inject.js
563- this . getContentAndInjectScript ( ) ,
564- ] ) ;
565-
566- const list = [ ...particularScriptList , generalScriptList . inject ! ] ;
554+ const particularScriptList = await this . getParticularScriptList ( ) ;
555+ // getContentAndInjectScript依赖loadScriptMatchInfo
556+ // 需要等getParticularScriptList完成后再执行
557+ const generalScriptList = await this . getContentAndInjectScript ( ) ;
567558
568- // 注册 content.js
569- const contentScript : chrome . scripting . RegisteredContentScript = generalScriptList . content ;
570- try {
571- await chrome . scripting . registerContentScripts ( [ contentScript ] ) ;
572- } catch ( e : any ) {
573- this . logger . error ( "register content.js error" , Logger . E ( e ) ) ;
574- }
559+ const list : chrome . userScripts . RegisteredUserScript [ ] = [ ...particularScriptList , ...generalScriptList ] ;
575560
576561 try {
577562 await chrome . userScripts . register ( list ) ;
0 commit comments