Запускается ли скрипт greasemonkey до или после onDOMLoaded? Возможно, вам придется отложить выполнение сценария до тех пор, пока сценарий jQuery не будет загружен родительским окном и загружен ...
Редактировать за комментарий:
Я не вижу элемент document.ready в вашем коде выше, хотя я вижу ваш комментарий об этом ... Однако, ваш комментарий слишком поздний в сценарии, чтобы его можно было использовать ... Это может объяснить :
(function($){ /* some code here */ })(unsafeWindow.jQuery)
Независимо от того, что вы положили в раздел /* some code here */
, если эта строка будет выполнена до определения unsafeWindow.jQuery
, вы все равно будете вызывать функцию для неопределенного объекта ...
Чтение вики GreaseSpot в unsafeWindow предлагает альтернативный подход:
var script = document.createElement("script");
script.type = "application/javascript";
script.innerHTML = "(function($){
//HoverIntent
$.fn.hoverIntent=function(f,g){...};
//Removed the plugin code. You can see it in the link at the bottom
//of the post.
//DOM is ready
//Fetch all the rows with arrows
$('.arrow')
.each(function(){
$(this).hoverIntent(mouseOver,mouseOut);
});
//mouseOver
function mouseOver(){
//THIS IS WHERE THE ERROR HAPPENS
$(this).click();
}
//mouseOut
function mouseOut(){ //nothing here.
}
})(jQuery);";
document.body.appendChild(script);
Редактировать: ни один из моих ответов не обязательно имеет смысл, поскольку вы используете объект $
за несколько строк до того, как проблема возникнет ...: -S странно.