From 62387fb87a71d2282cec8162f919db563df7b109 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 17 May 2019 19:26:48 -0400 Subject: [PATCH] Prevent picker's preview mode from modifying style attribute Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/551 The issue fixes previewing the hiding/unhiding of targeted elements in the element picker. However it does not address the case of previewing `:style(...)` operators -- this would require a much more complex fix, which I am not sure is worth the amount of work and increased code complexity. --- src/js/scriptlets/element-picker.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/js/scriptlets/element-picker.js b/src/js/scriptlets/element-picker.js index 888bf4a77..1cb5ecb2e 100644 --- a/src/js/scriptlets/element-picker.js +++ b/src/js/scriptlets/element-picker.js @@ -883,16 +883,15 @@ const filterToDOMInterface = (function() { const elem = item.elem; // https://github.com/gorhill/uBlock/issues/1629 if ( elem === pickerRoot ) { continue; } - const style = elem.style; if ( (elem !== htmlElem) && (item.type === 'cosmetic' || item.type === 'network' && item.src !== undefined) ) { - item.display = style.getPropertyValue('display'); - item.displayPriority = style.getPropertyPriority('display'); - style.setProperty('display', 'none', 'important'); + vAPI.domFilterer.hideNode(elem); + item.hidden = true; } if ( item.type === 'network' && item.style === 'background-image' ) { + const style = elem.style; item.backgroundImage = style.getPropertyValue('background-image'); item.backgroundImagePriority = style.getPropertyPriority('background-image'); style.setProperty('background-image', 'none', 'important'); @@ -903,13 +902,9 @@ const filterToDOMInterface = (function() { const unapplyHide = function() { if ( lastResultset === undefined ) { return; } for ( const item of lastResultset ) { - if ( item.hasOwnProperty('display') ) { - item.elem.style.setProperty( - 'display', - item.display, - item.displayPriority - ); - delete item.display; + if ( item.hidden === true ) { + vAPI.domFilterer.unhideNode(item.elem); + item.hidden = false; } if ( item.hasOwnProperty('backgroundImage') ) { item.elem.style.setProperty(