@@ -23,6 +23,17 @@ class background implements Launcher {
2323 this . update ( ) ;
2424 this . setDefaultConfig ( ) ;
2525 this . injectedScript ( ) ;
26+ this . event ( ) ;
27+ }
28+
29+ protected event ( ) {
30+ chrome . runtime . onInstalled . addListener ( ( details ) => {
31+ if ( details . reason == "install" ) {
32+ chrome . tabs . create ( { url : "https://cx.icodef.com/" } ) ;
33+ } else if ( details . reason == "update" ) {
34+ chrome . tabs . create ( { url : "https://github.com/CodFrm/cxmooc-tools/releases" } ) ;
35+ }
36+ } ) ;
2637 }
2738
2839 protected setDefaultConfig ( ) {
@@ -78,13 +89,6 @@ class background implements Launcher {
7889 }
7990 this . source = this . dealScript ( source , version ) ;
8091 } ) ;
81- if ( Application . App . debug ) {
82- chrome . storage . onChanged . addListener ( ( changes , namespace ) => {
83- if ( namespace == "local" && changes [ "source" ] != undefined ) {
84- this . source = this . dealScript ( changes [ "source" ] . newValue , version ) ;
85- }
86- } ) ;
87- }
8892 } ) ;
8993 }
9094
@@ -99,30 +103,28 @@ class background implements Launcher {
99103 if ( Application . App . debug ) {
100104 return ;
101105 }
102- chrome . tabs . onUpdated . addListener ( ( tabId , changeInfo , tab ) => {
103- if ( changeInfo . status === 'loading' && changeInfo . url == null ) {
104- for ( let i = 0 ; i < SystemConfig . match . length ; i ++ ) {
105- let v = SystemConfig . match [ i ] ;
106- v = v . replace ( / ( \. \? \/ ) / g, "\\$1" ) ;
107- v = v . replace ( / \* / g, ".*?" ) ;
108- let reg = new RegExp ( v ) ;
109- if ( reg . test ( tab . url ) ) {
110- chrome . tabs . executeScript ( tabId , {
111- code : `(function(){
112- let temp = document.createElement('script');
113- temp.setAttribute('type', 'text/javascript');
114- temp.innerHTML = "` + this . source + `";
115- temp.className = "injected-js";
116- document.documentElement.appendChild(temp)
117- }())` ,
118- allFrames : true ,
119- runAt : "document_start" ,
120- } ) ;
121- break ;
122- }
106+ chrome . webNavigation . onCommitted . addListener ( ( details ) => {
107+ for ( let i = 0 ; i < SystemConfig . match . length ; i ++ ) {
108+ let v = SystemConfig . match [ i ] ;
109+ v = v . replace ( / ( \. \? \/ ) / g, "\\$1" ) ;
110+ v = v . replace ( / \* / g, ".*?" ) ;
111+ let reg = new RegExp ( v ) ;
112+ if ( reg . test ( details . url ) ) {
113+ chrome . tabs . executeScript ( details . tabId , {
114+ frameId : details . frameId ,
115+ code : `(function(){
116+ let temp = document.createElement('script');
117+ temp.setAttribute('type', 'text/javascript');
118+ temp.innerHTML = "` + this . source + `";
119+ temp.className = "injected-js";
120+ document.documentElement.appendChild(temp)
121+ }())` ,
122+ runAt : "document_start" ,
123+ } ) ;
124+ break ;
123125 }
124126 }
125- } ) ;
127+ } )
126128 }
127129}
128130
0 commit comments