Greasemonkey выполняет сценарий в песочнице - страница не имеет доступа к нему по соображениям безопасности. Все входы в дом и окно осуществляются через обертки.
Если вы хотите получить доступ к незащищенным объектам, вы можете использовать свойство wrappedJSObject
.
Для вашего случая вы можете использовать unsafeWindow
(или window.wrappedJSObject
):
unsafeWindow.test = function() { ....
С этим связаны некоторые проблемы безопасности, см .: http://wiki.greasespot.net/UnsafeWindow
Кроме того, greasemonkey выполняет сценарий после события DOMContentLoaded (когда dom готов), поэтому вам не нужна эта ерунда при загрузке.
Кроме того, вы не можете использовать атрибуты для установки прослушивателей событий или свойства в этом отношении - для этого вы должны использовать dom api. Например:
t.firstChild.addEventListener('click', test, false);
или
t.firstChild.addEventListener('click', function(event){ blabla }, false);