@@ -2315,30 +2315,34 @@ builtinScriptlets.push({
2315
2315
fn : preventRefresh ,
2316
2316
world : 'ISOLATED' ,
2317
2317
dependencies : [
2318
- 'run-at.fn' ,
2319
2318
'safe-self.fn' ,
2320
2319
] ,
2321
2320
} ) ;
2322
2321
// https://www.reddit.com/r/uBlockOrigin/comments/q0frv0/while_reading_a_sports_article_i_was_redirected/hf7wo9v/
2323
2322
function preventRefresh (
2324
- arg1 = ''
2323
+ delay = ''
2325
2324
) {
2326
- if ( typeof arg1 !== 'string' ) { return ; }
2325
+ if ( typeof delay !== 'string' ) { return ; }
2327
2326
const safe = safeSelf ( ) ;
2328
- const logPrefix = safe . makeLogPrefix ( 'prevent-refresh' , arg1 ) ;
2327
+ const logPrefix = safe . makeLogPrefix ( 'prevent-refresh' , delay ) ;
2328
+ const stop = content => {
2329
+ window . stop ( ) ;
2330
+ safe . uboLog ( logPrefix , `Prevented "${ content } "` ) ;
2331
+ } ;
2329
2332
const defuse = ( ) => {
2330
2333
const meta = document . querySelector ( 'meta[http-equiv="refresh" i][content]' ) ;
2331
2334
if ( meta === null ) { return ; }
2332
- safe . uboLog ( logPrefix , `Prevented "${ meta . textContent } "` ) ;
2333
- const s = arg1 === ''
2334
- ? meta . getAttribute ( 'content' )
2335
- : arg1 ;
2336
- const ms = Math . max ( parseFloat ( s ) || 0 , 0 ) * 1000 ;
2337
- setTimeout ( ( ) => { window . stop ( ) ; } , ms ) ;
2335
+ const content = meta . getAttribute ( 'content' ) || '' ;
2336
+ const ms = delay === ''
2337
+ ? Math . max ( parseFloat ( content ) || 0 , 0 ) * 500
2338
+ : 0 ;
2339
+ if ( ms === 0 ) {
2340
+ stop ( content ) ;
2341
+ } else {
2342
+ setTimeout ( ( ) => { stop ( content ) ; } , ms ) ;
2343
+ }
2338
2344
} ;
2339
- runAt ( ( ) => {
2340
- defuse ( ) ;
2341
- } , 'interactive' ) ;
2345
+ self . addEventListener ( 'load' , defuse , { capture : true , once : true } ) ;
2342
2346
}
2343
2347
2344
2348
/******************************************************************************/
0 commit comments