0

作成したHTMLからバックグラウンドに情報を送信し、次にコンテンツスクリプトに情報を送信して、単純な自動フォームフィラーを作成しました。これにより、挿入されたスクリプトでフォームの情報を変更できます。

ページが読み込まれると、コンテンツスクリプトが実行されることを知っています。ページをリロードせずに、コンテンツスクリプトを再度実行できるかどうかを知りたい。

コンテンツスクリプトで関数を取得sendRequestしました。これは、ページの準備ができたときにのみ、情報を確実に取得するために使用します。次に、フォームに情報を追加し、送信されるのを待ちます。

コンテンツスクリプトで、を追加しましたonRequest。これは機能します(情報を取得します)。ただし、ページを再作成しない限り、フォームに変更が表示されません。

私はそれが可能かどうか、そしてそれがどのような科目を実行するかを知りたいのですが、これを実行するために私は学ぶべきです。

私はクローム拡張に不慣れで、まだ学習中です:) 1ページでjQueryを使用しているので、jQueryでの回答も良いでしょう。

4

3 に答える 3

2

chrome.tabs.sendRequestfromをバックグラウンドで作成すると、コンテンツスクリプトからchrome.extestion.onRequestを使用でき、両方がほぼ同時に実行されるため、毎回実行されることがわかりました。

だから私はバックグラウンドからやった:

  chrome.tabs.query({}, function (tabs) {
        for (var i = 0; i < tabs.length; i++) {
            chrome.tabs.sendRequest(tabs[i].id, {...requests u want to send  }, function (response) {

            });

        }
    });

コンテンツスクリプトから:

chrome.extension.onRequest.addListener(function (request, sender, sendRespons) {
      //get requested info here
      //call functions.

      sendResponse({}); //send info back to background page.
});
于 2012-07-13T17:30:41.457 に答える
1

フォームのターゲットは、ページの再読み込みを回避するiframeである可能性があります。それがどれほど役立つかわからない。

于 2012-07-13T15:14:03.927 に答える
1

コンテンツスクリプトを再度実行する正しい方法は、chrome.tabs.executeScriptメソッドを使用することです。2つの引数を受け取ります。最初の引数はです。これは、イベントの1tabIdつなど、さまざまな方法で取得できます。現在選択されているタブでコンテンツスクリプトを実行するために使用します(注意:これはアクティブな開発ツールウィンドウでもある可能性があります!)。chrome.tabsnull

例:

// Reloads the current tab
chrome.tabs.executeScript(null, {code:'location.reload();'});

// Executes contentscript.js in the current tab
chrome.tabs.executeScript(null, {file:'contentscript.js'});

// Executes contentscript.js in all frames in the current tab
chrome.tabs.executeScript(null, {file:'contentscript.js', allFrames: true});

// Receives message from content script, and execute a content script:
chrome.extension.onMessage.addListener(function(details) {
    if (details.message === 'load a content script') {
        chrome.tabs.executeScript(details.sender.tab.id, {file: 'a_script.js'});
    }
});
     // The previous one is activated from a content script, as follows:
     chrome.extension.sendMessage('load a content script');

(Chrome 20以降、andonMessagesendMessage代わりに使用する必要があります)onRequestsendRequest

于 2012-07-13T19:54:57.600 に答える