2

私はGoogleChrome拡張機能に取り組んでおり、頻繁に使用するWebサイトにいくつかの追加機能を提供しています。これにより、AJAXリクエストが成功した場合にスクリプトを再度実行しようとしています。これは、サイトの性質上必要です。

先に進む:私がやりたいのは、簡単に言えば、AJAXリクエストが成功するたびに関数をトリガーすることです。したがって、私は以下を作成し、関連するWebサイトでコンソールで実行しました。

$(document).ajaxSuccess(function() {
   console.log('AJAX success');
});

それから私はウェブサイトを使い始めました、そして新しいコンテンツがAJAXによってロードされるたびに、私は確かにそれの確認を得ました.ajaxSuccess、これまでのところすべて良いです。

次に、さまざまな要素をすべて組み合わせて、適切なChrome拡張機能にしました。ビットがコンテンツスクリプトにある場合.ajaxSuccess(適切に実行されていることなどを確認しました)、WebサイトでのAJAXリクエストがトリガーしなくなりました。

私はそれを理解しようとしましたが、あまり運がありません。拡張機能がAJAX関連のものにアクセスするために特別な許可を必要とする可能性があると思いますが、それが何であるかはわかりません。現在のところ、拡張機能の権限は次のとおりです。

"permissions": [
    "storage", "tabs", "http://website.com/*"
]
4

1 に答える 1

3

私はこれに似たやや不快な回避策を作成することになりました:

var DOMTimeout = null;
    $('.class').bind('DOMNodeInserted', function() {
        if(DOMTimeout)
            clearTimeout(DOMTimeout);

    DOMTimeout = setTimeout(function() { console.log('AJAX probably added something'); }, 150);
});
于 2013-01-11T22:21:00.070 に答える