2009-09-27 102 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方法。但至少我有一個解決方法。