@@ -38,6 +38,7 @@ parser.addArgument("class"); // Add a class to the injected content.
3838parser . addArgument ( "history" , "none" , [ "none" , "record" ] ) ;
3939parser . addArgument ( "push-marker" ) ;
4040parser . addArgument ( "scroll" ) ;
41+ parser . addArgument ( "remove-tags" , "script" , [ ] , true ) ;
4142
4243// Note: this should not be here but the parser would bail on unknown
4344// parameters and expand/collapsible need to pass the url to us.
@@ -823,8 +824,8 @@ const inject = {
823824 return true ;
824825 } ,
825826
826- _sourcesFromHtml ( html , url , sources ) {
827- const $html = this . _parseRawHtml ( html , url ) ;
827+ _sourcesFromHtml ( html , url , sources , cfg ) {
828+ const $html = this . _parseRawHtml ( html , url , cfg ) ;
828829 return sources . map ( ( source ) => {
829830 if ( source === "body" ) {
830831 source = "#__original_body" ;
@@ -962,17 +963,21 @@ const inject = {
962963 return page . innerHTML . trim ( ) ;
963964 } ,
964965
965- _parseRawHtml ( html , url = "" ) {
966+ _parseRawHtml ( html , url = "" , cfg = { } ) {
966967 // remove script tags and head and replace body by a div
967968 const title = html . match ( / \< t i t l e \> ( .* ) \< \/ t i t l e \> / ) ;
968969 let clean_html = html
969- . replace ( / < s c r i p t \b [ ^ < ] * (?: (? ! < \/ s c r i p t > ) < [ ^ < ] * ) * < \/ s c r i p t > / gi, "" )
970970 . replace ( / < h e a d \b [ ^ < ] * (?: (? ! < \/ s c r i p t > ) < [ ^ < ] * ) * < \/ h e a d > / gi, "" )
971971 . replace ( / < h t m l ( [ ^ > ] * ?) > / gi, "" )
972972 . replace ( / < \/ h t m l ( [ ^ > ] * ?) > / gi, "" )
973973 . replace ( / < b o d y ( [ ^ > ] * ?) > / gi, '<div id="__original_body">' )
974974 . replace ( / < \/ b o d y ( [ ^ > ] * ?) > / gi, "</div>" ) ;
975975
976+ for ( const tag of cfg . removeTags || [ ] ) {
977+ const re = RegExp ( String . raw `<${ tag } \b[^<]*(?:(?!<\/${ tag } >)<[^<]*)*<\/${ tag } >` , "gi" )
978+ clean_html = clean_html . replace ( re , "" ) ;
979+ }
980+
976981 if ( title && title . length == 2 ) {
977982 clean_html = title [ 0 ] + clean_html ;
978983 }
@@ -1113,7 +1118,7 @@ const inject = {
11131118 sources ( cfgs , data ) {
11141119 const sources = cfgs . map ( ( cfg ) => cfg . source ) ;
11151120 sources . push ( "title" ) ;
1116- const result = this . _sourcesFromHtml ( data , cfgs [ 0 ] . url , sources ) ;
1121+ const result = this . _sourcesFromHtml ( data , cfgs [ 0 ] . url , sources , cfgs [ 0 ] ) ;
11171122 return result ;
11181123 } ,
11191124 } ,
0 commit comments