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()方法,这会在与选择器匹配的 current和任何 future节点 上触发。

代码变成这样:

$(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 回答