2009-09-27 201 views
0

我正在尝试在我的GreaseMonkey脚本中包含cluetip。要做到这一点,我定义我的userscript如下:如何在GreaseMonkey脚本中包含cluetip

// ==UserScript== 
// @name   myscript 
// @namespace  myscript 
// @description This is my script 
// @require  http://plugins.learningjquery.com/cluetip/jquery.cluetip.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.bgiframe.min.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.hoverIntent.js 
// @resource  jquery.cluetip.css http://plugins.learningjquery.com/cluetip/jquery.cluetip.css 
// @include  http://mysite.com/* 
// ==/UserScript== 

(function(){ 
    function GM_init() { 
     if(typeof unsafeWindow.jQuery == 'undefined') { 
      window.setTimeout(GM_wait,100); 
     } else { 
      jQuery_init(unsafeWindow.jQuery); 
     } 
    } 

    GM_init(); 

    function jQuery_init($) { 
     $('a.testTitle').cluetip({splitTitle: '|'}); 
    } 
})(); 

当我输入脚本似乎导入罚款和我的config.xml中,这一行结束:

<Script filename="myscript.user.js" name="myscript namespace="myscript" description="This is my script" enabled="true" basedir="myscript"> 
    <Include>http://mysite.com/*</Include> 
    <Require filename="jquerycluetip.js"/> 
    <Require filename="jquerybgiframemin.js"/> 
    <Require filename="jqueryhoverintent.js"/> 
    <Resource name="jquery.cluetip.css" filename="jquerycluetip.css" mimetype="text/css"/> 
</Script> 

脚本后安装我看到引用的需求和资源已被下载并重新命名为每个myscript文件夹中的条目。

当我加载页面myscript不运行。我试过重新启动Firefox,卸载并重新安装脚本并设置警报以确保脚本未运行。我不知道什么是错的。有人有解决方案吗?

有关信息,JQuery已包含在页面中,因此我不需要它。如果我从config.xml中删除所有提示条目,请删除函数调用,重新启动Firefox,然后尝试修改标准JQuery链接一切正常。

注意:我也尝试将JQuery添加到@Require列表中。这意味着我的脚本加载,但在第一个cluetip函数调用时失败。

+0

您可以将脚本发布到http://userscripts.org/或其他地方,让我们知道这是什么网站?我想自己调试,但我懒得做所有的工作。过去我写了很多复杂的GM脚本,但这已经有一段时间了。 – 2009-09-27 16:31:11

+0

它实际上是用于SO的GM脚本。我发布了一个解释和链接到当前版本,使用我的解决方法,在元(http://meta.stackexchange.com/questions/23656/greasemonkey-script-to-gold-plate-sofu) – 2009-09-27 21:13:33

+0

我修改了你的SO脚本使用这种方法,它似乎仍然适用于我。我只是删除了@require,并在顶部添加了GM_init代码。然后我将匿名init函数重命名为jQuery_init($),并删除了周围的$(...)() – 2010-03-31 15:07:48

回答

0

我发现,它的工作原理,如果我进口的JQuery,而不是使用GM_init方法并删除所有GM_init代码:

// ==UserScript== 
// @name   myscript 
// @namespace  myscript 
// @description This is my script 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.cluetip.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.bgiframe.min.js 
// @require  http://plugins.learningjquery.com/cluetip/jquery.hoverIntent.js 
// @resource  jquery.cluetip.css http://plugins.learningjquery.com/cluetip/jquery.cluetip.css 
// @include  http://mysite.com/* 
// ==/UserScript== 

$(function() { 
    $('a.testTitle').cluetip({splitTitle: '|'}); 
})(); 

我宁愿避免这一变化,并继续使用GM_init方法。但至少我有一个解决方法。