Существует три возможных run-at
значения для сценариев GM - с соответствующим document.readyState в скобках
- document-start ( до
document.readyState === 'loading'
) - document-end (
document.readyState === 'ineractive'
) - document-idle (
document.readyState === 'complete'
)
Это единственные доступные точки внедрения для вашего скрипта
вначало / конец - внешние ресурсы еще не будут загружены, поэтому слишком рано для того, что вы хотите
на холостом ходу, все внешние ресурсы загружены, так что слишком поздно для того, что вы хотите
ОК, вызнаю все это, но я добавляю это для других будущих читателей
если вы загрузите свой скрипт в конце документа, вы можете добавить load
слушателей ко всем <link rel="stylesheet"
, как
Promise.all(Array.from(document.querySelectorAll('link[rel="stylesheet"]'), ss => new Promise(resolve => {
const href = ss.href;
const fulfill = status => resolve({href, status});
setTimeout(fulfill, 5000, 'timeout');
ss.addEventListener('load', () => resolve('load'));
ss.addEventListener('error', () => resolve('error')); // yes, resolve, because we just want to wait until all stylesheets are done with, errors shouldn't stop us
}))).then((results) => {
// results is an array of {href:'some url', status: 'load|error|timeout'}
// at this point stylesheets have finished loading
});