0

GreaseMonkeyスクリプトにヒントを含めようとしています。これを行うために、ユーザースクリプトを次のように定義しました。

// ==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 でリンクを変更してみてください。すべて正常に動作します。

注: @Require リストにも JQuery を追加してみました。これは、私のスクリプトが読み込まれることを意味しますが、最初のcluetip関数呼び出しで失敗します.

4

1 に答える 1

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この変更を避けて、このアプローチを引き続き使用したいと思います。しかし、少なくとも私には回避策があります。

于 2009-09-27T16:38:37.663 に答える