@@ -24,8 +24,8 @@ export class GMContext {
2424 public static API ( param : ApiParam = { } ) {
2525 return ( target : any , propertyName : string , descriptor : PropertyDescriptor ) => {
2626 const key = propertyName ;
27- if ( key === "GMdotXmlHttpRequest " ) {
28- GMContext . apis . set ( "GM.xmlHttpRequest " , {
27+ if ( key === "GMDotGetResourceUrl " ) {
28+ GMContext . apis . set ( "GM.getResourceUrl " , {
2929 api : descriptor . value ,
3030 param,
3131 } ) ;
@@ -36,11 +36,13 @@ export class GMContext {
3636 param,
3737 } ) ;
3838 // 兼容GM.*
39- const dot = key . replace ( "_" , "." ) ;
39+ let dot = key . replace ( "_" , "." ) ;
4040 if ( dot !== key ) {
41- // 特殊处理GM.xmlHttpRequest
42- if ( dot === "GM.xmlhttpRequest" ) {
43- return ;
41+ // 特殊处理GM.*一些大小写不一致的情况
42+ switch ( dot ) {
43+ case "GM.xmlhttpRequest" :
44+ dot = "GM.xmlHttpRequest" ;
45+ break ;
4446 }
4547 GMContext . apis . set ( dot , {
4648 api : descriptor . value ,
@@ -58,10 +60,7 @@ export default class GMApi {
5860
5961 valueChangeListener = new Map < number , { name : string ; listener : GMTypes . ValueChangeListener } > ( ) ;
6062
61- constructor (
62- private prefix : string ,
63- private message : Message
64- ) { }
63+ constructor ( private prefix : string , private message : Message ) { }
6564
6665 // 单次回调使用
6766 public sendMessage ( api : string , params : any [ ] ) {
@@ -792,4 +791,21 @@ export default class GMApi {
792791 }
793792 return undefined ;
794793 }
794+
795+ // GM_getResourceURL的异步版本,用来兼容GM.getResourceUrl
796+ @GMContext . API ( )
797+ GMDotGetResourceUrl ( name : string , isBlobUrl ?: boolean ) : Promise < string | undefined > {
798+ console . log ( "GMDotGetResourceUrl" , name , isBlobUrl ) ;
799+ if ( ! this . scriptRes . resource ) {
800+ return Promise . resolve ( undefined ) ;
801+ }
802+ const r = this . scriptRes . resource [ name ] ;
803+ if ( r ) {
804+ if ( isBlobUrl ) {
805+ return Promise . resolve ( URL . createObjectURL ( base64ToBlob ( r . base64 ) ) ) ;
806+ }
807+ return Promise . resolve ( r . base64 ) ;
808+ }
809+ return Promise . resolve ( undefined ) ;
810+ }
795811}
0 commit comments