0

GM_xmlhttprequestを介してajax呼び出しを起動し、テキストとリンクを含む単純なページを「debug」という名前のdivにロードするユーザースクリプトがあります。これは非常にうまく機能します。ここで、要求されたドキュメント内のすべてのリンクがgm_xmlhttprequestを介して要求されるようにします。機能が機能しない理由がわかりません

    $('.ajax, .ajaxn').click(function(event) {
 event.preventDefault();
 var href = $(this).attr('href');
GM_xmlhttpRequest({
                method: "GET",
                url: href,
                headers: {
                    "Content-Type": "application/x-www-form-urlencoded"
                    },
                        onload: function(response) {
                                $('#debug').html('');
                                $('#debug').append(response.responseText).fadeIn(5000);
                                        }
            });
});

応答内のリンクにはクラスajaxnがあり、firebug dom / htmlパネルは、応答が実際に#debugに挿入されていることを示しています。

ヒントはありますか?

4

1 に答える 1

2

質問は明確ではありませんが、コンテンツ内でリンクがクリックされた場合(リンクの自動ロードや???ではなく)click、そのハンドラーを起動する必要があると仮定します...#debug

.click()その後、メソッドを使用しないでください。jQueryの.on()メソッドを使用して、セレクターに一致する 現在および将来のノードで起動します。

コードは次のようになります。

$(document).on ("click", ".ajax, .ajaxn", function (event) {
    event.preventDefault ();
    var href = $(this).attr('href');

    GM_xmlhttpRequest ( {
        method:     "GET",
        url:        href,
        headers:    {
            "Content-Type": "application/x-www-form-urlencoded"
        },
        onload:     function (response) {
            $('#debug').empty ();
            $('#debug').append (response.responseText).fadeIn (5000);
        }
    } );
} );


また、代わりに$('#debug').html('');   Useを使用 しないでください。$('#debug').empty();これは少し速くなり、コードはもう少し自己文書化されます。

于 2013-03-27T09:11:00.657 に答える