由于某种原因,我的Firefox4+GreaseMonkey脚本加载jQuery两次。我复制粘贴了下面的代码片段,"test“提示显示了两次。
问候
var $;
// Add jQuery
(function(){
if (typeof unsafeWindow.jQuery == 'undefined') {
var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement,
GM_JQ = document.createElement('script');
GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
GM_JQ.type = 'text/javascript';
GM_JQ.async = true;
GM_Head.insertBefore(GM_JQ, GM_Head.firstChild);
}
GM_wait();
})();
// Check if jQuery's loaded
function GM_wait() {
if (typeof unsafeWindow.jQuery == 'undefined') {
window.setTimeout(GM_wait, 100);
} else {
$ = unsafeWindow.jQuery.noConflict(true);
letsJQuery();
}
}
// All your GM code must be inside this function
function letsJQuery() {
alert("test");
}发布于 2011-05-04 07:52:11
这可能是因为目标页面正在加载框架或iframes。
将以下行添加到脚本的代码部分的顶部:
if (window.top != window.self) //-- Don't run on frames or iframes
return;而且,如果你只是在使用FF + GM,那就不用费心去加载jQuery了。通用汽车现在可以使用较新的jQuery版本。
只需添加一行,如:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js添加到脚本的元数据块中。jQuery将被复制到您的本地机器上并从那里运行--消除了脚本运行时有时可能出现的几秒钟的延迟。
如果你使用像TamperMonkey这样的模拟GM的扩展,这样的脚本就可以在Chrome中运行。
https://stackoverflow.com/questions/5876874
复制相似问题