Add support to remove attributes in xml-prune scriptlet

Related issue:
- https://github.com/uBlockOrigin/uAssets/issues/18244
This commit is contained in:
Raymond Hill 2023-06-05 08:51:20 -04:00
parent 9801093117
commit f8c4b8e52d
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2
1 changed files with 12 additions and 7 deletions

View File

@ -2087,7 +2087,6 @@ function xmlPrune(
const out = [];
for ( let i = 0; i < xpr.snapshotLength; i++ ) {
const node = xpr.snapshotItem(i);
if ( node.nodeType !== 1 ) { continue; }
out.push(node);
}
return out;
@ -2097,12 +2096,18 @@ function xmlPrune(
if ( selectorCheck !== '' && xmlDoc.querySelector(selectorCheck) === null ) {
return xmlDoc;
}
const elems = queryAll(xmlDoc, selector);
if ( elems.length !== 0 ) {
if ( log ) { safeSelf().uboLog(`xmlPrune: removing ${elems.length} nodes`); }
for ( const elem of elems ) {
elem.remove();
if ( log ) { safeSelf().uboLog(`xmlPrune: ${elem.nodeName} removed`); }
const items = queryAll(xmlDoc, selector);
if ( items.length !== 0 ) {
if ( log ) { safeSelf().uboLog(`xmlPrune: removing ${items.length} items`); }
for ( const item of items ) {
if ( item.nodeType === 1 ) {
item.remove();
} else if ( item.nodeType === 2 ) {
item.ownerElement.removeAttribute(item.nodeName);
}
if ( log ) {
safeSelf().uboLog(`xmlPrune: ${item.constructor.name}.${item.nodeName} removed`);
}
}
}
} catch(ex) {