@@ -91,35 +91,17 @@ function hrefSanitizer(
91
91
}
92
92
return '' ;
93
93
} ;
94
- const extractParam = ( href , source ) => {
95
- if ( Boolean ( source ) === false ) { return href ; }
96
- const recursive = source . includes ( '?' , 1 ) ;
97
- const end = recursive ? source . indexOf ( '?' , 1 ) : source . length ;
98
- try {
99
- const url = new URL ( href , document . location ) ;
100
- let value = url . searchParams . get ( source . slice ( 1 , end ) ) ;
101
- if ( value === null ) { return href }
102
- if ( recursive ) { return extractParam ( value , source . slice ( end ) ) ; }
103
- return value ;
104
- } catch {
105
- }
106
- return href ;
107
- } ;
108
94
const extractURL = ( elem , source ) => {
109
95
if ( / ^ \[ .* \] $ / . test ( source ) ) {
110
96
return elem . getAttribute ( source . slice ( 1 , - 1 ) . trim ( ) ) || '' ;
111
97
}
112
98
if ( source === 'text' ) {
113
99
return elem . textContent
114
- . replace ( / ^ [ ^ \x21 - \x7e ] + / , '' ) // remove leading invalid characters
115
- . replace ( / [ ^ \x21 - \x7e ] + $ / , '' ) // remove trailing invalid characters
116
- ;
100
+ . replace ( / ^ [ ^ \x21 - \x7e ] + | / , '' ) // remove leading invalid characters
101
+ . replace ( / [ ^ \x21 - \x7e ] + $ / , '' ) ; // remove trailing invalid characters
117
102
}
118
- if ( source . startsWith ( '?' ) === false ) { return '' ; }
119
- const steps = source . replace ( / ( \S ) \? / g, '\\1?' ) . split ( / \s + / ) ;
120
- const url = steps . length === 1
121
- ? extractParam ( elem . href , source )
122
- : urlSkip ( elem . href , false , steps ) ;
103
+ const steps = source . replace ( / ( \S ) \? / g, '\\1 ?' ) . split ( / \s + / ) ;
104
+ const url = urlSkip ( elem . href , false , steps ) ;
123
105
if ( url === undefined ) { return ; }
124
106
return url . replace ( / / g, '%20' ) ;
125
107
} ;
0 commit comments