Приходит в голову такое решение:
console.log('Set interval');
var scriptOnLoadInterval = window.setInterval(attachOnLoads, 20);
function attachOnLoads() {
$('script').each(function() {
var script = $(this);
if (!script.data('onload-attached')) {
script.data('onload-attached', true).one('load', onloadHandler);
}
});
};
function onloadHandler() { console.log( $(this).attr('src') ); };
$(function() {
window.clearInterval(scriptOnLoadInterval);
console.log('Clear interval');
});
Суть в том, чтобы как можно раньше зарегистрировать интервальное событие с как можно меньшим таймингом и в этом событии пробегать по скриптам и к вновь появившимся навешивать onload. На document.ready интервал можно смело развоплощать.
Нужно поиграться с самим интервалом, чтобы он был достаточно маленьким, чтобы отслеживать появление скриптов, но при этом успевал отработать и не убивал производительность. И тем не менее, потенциально могут быть несрабатывания, нужно играться и смотреть.