Improve set-attr/trusted-set-attr scriptlets

Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/31323#issuecomment-3701471598
This commit is contained in:
Raymond Hill 2025-12-31 08:49:09 -05:00
parent e0fcb8485a
commit 3f3d4768b6
No known key found for this signature in database
GPG key ID: F5630CAE62A14316

View file

@ -31,7 +31,8 @@ export function setAttrFn(
logPrefix,
selector = '',
attr = '',
value = ''
value = '',
options = {}
) {
if ( selector === '' ) { return; }
if ( attr === '' ) { return; }
@ -93,7 +94,7 @@ export function setAttrFn(
childList: true,
});
};
runAt(( ) => { start(); }, 'idle');
runAt(( ) => { start(); }, options.runAt || 'idle');
}
registerScriptlet(setAttrFn, {
name: 'set-attr.fn',
@ -136,7 +137,6 @@ export function setAttr(
const safe = safeSelf();
const logPrefix = safe.makeLogPrefix('set-attr', selector, attr, value);
const validValues = [ '', 'false', 'true' ];
if ( validValues.includes(value.toLowerCase()) === false ) {
if ( /^\d+$/.test(value) ) {
const n = parseInt(value, 10);
@ -146,8 +146,8 @@ export function setAttr(
return;
}
}
setAttrFn(false, logPrefix, selector, attr, value);
const options = safe.getExtraArgs(Array.from(arguments), 3);
setAttrFn(false, logPrefix, selector, attr, value, options);
}
registerScriptlet(setAttr, {
name: 'set-attr.js',
@ -186,7 +186,8 @@ export function trustedSetAttr(
) {
const safe = safeSelf();
const logPrefix = safe.makeLogPrefix('trusted-set-attr', selector, attr, value);
setAttrFn(true, logPrefix, selector, attr, value);
const options = safe.getExtraArgs(Array.from(arguments), 3);
setAttrFn(true, logPrefix, selector, attr, value, options);
}
registerScriptlet(trustedSetAttr, {
name: 'trusted-set-attr.js',