2

ページにリンクを挿入し、クリックされたときのイベントリスナーを追加する GM スクリプトがあります。

次に、特にいくつかの jQuery.get 呼び出しを含む関数を実行します。ただし、jQuery の unsafeWindow バージョンを使用しない限り、これらの呼び出しは起動しないようです。

function runMyFunc() {
    console.log('myFunc is called');

    $.get('index.php',function () {
        console.log('jQuery.get worked');
    });
}

$("#someHook").before('<a id="myLink">Link</a>');

$('#myLink').click(runMyFunc);

上記は「myFuncが呼び出されました」をコンソールに出力しますが、.getでは何もしません

私はFF17とGM1.5、http: //code.jquery.com/jquery.jsのjQUEryを使用しています

unsafeWindow を使用するよりもうまく機能させる方法はありますか? 私はこれを GM 1.0 の前に動作させていましたが、スクリプトで変更する必要がある $.get がたくさんありますが、すべてが同じシナリオから実行されるわけではありません

4

1 に答える 1

1

あなたのコードは私にとってはうまくいきます。 なぜ/どのように機能していないと思います$.getか?

. _ 'jQuery.get worked'_ index.phpFirebug NetパネルやWiresharkなどをチェックして、AJAX 呼び出しが行われたかどうかを確認しましたか?

とにかく、この Greasemonkey スクリプトをインストールすると、そのコードが機能していることに加えて、いくつかのエラー処理を確認できます。

// ==UserScript==
// @name     _delme9h762
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @include  http://fiddle.jshell.net/ZqhRH/*
// @require  http://code.jquery.com/jquery.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

function runMyFunc() {
    console.log('myFunc is called');

    $.get('index.php', function () {
        console.log ('jQuery.get worked');
    } )
    .error ( function (respObj) {
        console.log ("Error! ", respObj.status, respObj.statusText);
    } )
    .complete ( function (respObj) {
        console.log ("AJAX Complete. Status: ", respObj.status);
    } )
    ;
}

$("#someHook").before('<a id="myLink">Link</a>');

$('#myLink').click(runMyFunc);


そして、fiddle.jshell.net/ZqhRH/1/show/にアクセスしてください。

コンソールに次のように表示されることに注意してください。

myFunc は
エラーと呼ばれます。404 NOT FOUND
AJAX 完了。ステータス: 404

jsFiddle サイトにindex.phpは存在しないため、$.get()それ以外は完全に機能しています。

于 2012-11-24T02:39:43.637 に答える