11/*******************************************************************************
22
33 uBlock Origin - a browser extension to block requests.
4- Copyright (C) 2014-2018 Raymond Hill
4+ Copyright (C) 2014-present Raymond Hill
55
66 This program is free software: you can redistribute it and/or modify
77 it under the terms of the GNU General Public License as published by
@@ -1495,8 +1495,8 @@ var stopPicker = function() {
14951495var startPicker = function ( details ) {
14961496 pickerRoot . addEventListener ( 'load' , stopPicker ) ;
14971497
1498- var frameDoc = pickerRoot . contentDocument ;
1499- var parsedDom = ( new DOMParser ( ) ) . parseFromString (
1498+ let frameDoc = pickerRoot . contentDocument ;
1499+ let parsedDom = ( new DOMParser ( ) ) . parseFromString (
15001500 details . frameContent ,
15011501 'text/html'
15021502 ) ;
@@ -1505,6 +1505,17 @@ var startPicker = function(details) {
15051505 // picker style properties.
15061506 parsedDom . documentElement . id = 'ublock0-epicker' ;
15071507
1508+ // https://github.com/gorhill/uBlock/issues/2240
1509+ // https://github.com/uBlockOrigin/uBlock-issues/issues/170
1510+ // Remove the already declared inline style tag: we will create a new
1511+ // one based on the removed one, and replace the old one.
1512+ let style = parsedDom . querySelector ( 'style' ) ;
1513+ let styleText = style . textContent ;
1514+ style . parentNode . removeChild ( style ) ;
1515+ style = frameDoc . createElement ( 'style' ) ;
1516+ style . textContent = styleText ;
1517+ parsedDom . head . appendChild ( style ) ;
1518+
15081519 frameDoc . replaceChild (
15091520 frameDoc . adoptNode ( parsedDom . documentElement ) ,
15101521 frameDoc . documentElement
@@ -1533,7 +1544,7 @@ var startPicker = function(details) {
15331544 pickerRoot . contentWindow . focus ( ) ;
15341545
15351546 // Restore net filter union data if it originate from the same URL.
1536- var eprom = details . eprom || null ;
1547+ let eprom = details . eprom || null ;
15371548 if ( eprom !== null && eprom . lastNetFilterSession === lastNetFilterSession ) {
15381549 lastNetFilterHostname = eprom . lastNetFilterHostname || '' ;
15391550 lastNetFilterUnion = eprom . lastNetFilterUnion || '' ;
@@ -1552,37 +1563,32 @@ var startPicker = function(details) {
15521563 }
15531564
15541565 // No mouse position available, use suggested target
1555- var target = details . target || '' ;
1556- var pos = target . indexOf ( '\t' ) ;
1557- if ( pos === - 1 ) {
1558- return ;
1559- }
1560- var srcAttrMap = {
1566+ let target = details . target || '' ;
1567+ let pos = target . indexOf ( '\t' ) ;
1568+ if ( pos === - 1 ) { return ; }
1569+
1570+ let srcAttrMap = {
15611571 'a' : 'href' ,
15621572 'audio' : 'src' ,
15631573 'embed' : 'src' ,
15641574 'iframe' : 'src' ,
15651575 'img' : 'src' ,
15661576 'video' : 'src' ,
15671577 } ;
1568- var tagName = target . slice ( 0 , pos ) ;
1569- var url = target . slice ( pos + 1 ) ;
1570- var attr = srcAttrMap [ tagName ] ;
1578+ let tagName = target . slice ( 0 , pos ) ;
1579+ let url = target . slice ( pos + 1 ) ;
1580+ let attr = srcAttrMap [ tagName ] ;
15711581 if ( attr === undefined ) {
15721582 return ;
15731583 }
1574- var elems = document . querySelectorAll ( tagName + '[' + attr + ']' ) ;
1575- var i = elems . length ;
1576- var elem , src ;
1584+ let elems = document . querySelectorAll ( tagName + '[' + attr + ']' ) ;
1585+ let i = elems . length ;
1586+ let elem , src ;
15771587 while ( i -- ) {
15781588 elem = elems [ i ] ;
15791589 src = elem [ attr ] ;
1580- if ( typeof src !== 'string' || src === '' ) {
1581- continue ;
1582- }
1583- if ( src !== url ) {
1584- continue ;
1585- }
1590+ if ( typeof src !== 'string' || src === '' ) { continue ; }
1591+ if ( src !== url ) { continue ; }
15861592 elem . scrollIntoView ( {
15871593 behavior : 'smooth' ,
15881594 block : 'start'
0 commit comments