用户脚本和大多数 Greasemonkey 脚本在沙箱中运行。因此,脚本需要自行加载 jQuery($
您的代码正在使用的对象),或者需要注入代码以使用目标页面的 jQuery 版本。
在跨浏览器脚本中使用 jQuery 的最佳方式是通过这种令人惊叹的绝妙方法。(^_^)
因此,您的脚本将变为:
// ==UserScript==
// @name _Mouse-click detect
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_info
// ==/UserScript==
function GM_main ($) {
function removeSth () {
$('a').click (function () {
alert ("warning");
return false;
} );
}
removeSth ();
}
if (typeof GM_info !== "undefined") {
GM_main ($);
}
else {
add_jQuery (GM_main);
}
function add_jQuery (callbackFn, jqVersion) {
var jqVersion = jqVersion || "1.7.2";
var D = document;
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
var scriptNode = D.createElement ('script');
scriptNode.src = 'http://ajax.googleapis.com/ajax/libs/jquery/'
+ jqVersion
+ '/jquery.min.js'
;
scriptNode.addEventListener ("load", function () {
var scriptNode = D.createElement ("script");
scriptNode.textContent =
'var gm_jQuery = jQuery.noConflict (true);\n'
+ '(' + callbackFn.toString () + ')(gm_jQuery);'
;
targ.appendChild (scriptNode);
}, false);
targ.appendChild (scriptNode);
}
但是,对于 Firefox-Greasemonkey 和 Tampermonkey,您可以将脚本简化为:
// ==UserScript==
// @name _Mouse-click detect
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_info
// ==/UserScript==
function removeSth () {
$('a').click (function () {
alert ("warning");
return false;
} );
}
removeSth ();