1

ハイライトされたテキストに基づいて外部スクリプトを起動する拡張機能を作成しています。これまでのところ、新しく作成されたウィンドウを閉じるときに問題が発生することを除いて、スクリプトは機能します。

私のbackground.htmlには、次のものがあります。

<script>
function executeScript(selection) {
  var queryText = 'script:' + selectedText;
  chrome.tabs.create({url: queryText});
  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.remove(tab.id);
  });
}
</script>

私の問題は上記の設定にあります。「url」が読み込まれる前にタブが閉じられるため、スクリプトが実行されることはありません。

getSelected行(5〜7行目)を取り出すと、タブが開き、スクリプトが完全に実行されます。実行後にタブを自動的に閉じる構文を取得しようとしています。

ありがとう!

4

3 に答える 3

1

何を達成しようとしているのか正確にはわかりませんが、スクリプトの実行後にタブを閉じたい場合は、スクリプトで「CloseMe」リクエストをbackground.htmlに送信する必要がありますchrome.extension.sendRequest

スクリプトの実行が終了した後に呼び出される関数(タブを閉じることができる)を渡すことができるchrome.tabs.executeScriptを使用する方がよい場合があります。

于 2010-06-24T19:32:16.033 に答える
1

この問題のフォローアップ質問を投稿したいと思います。

特定のタブのURL(および最終的には選択したテキスト)をプログラム(OS X)に渡すChrome拡張機能を作成したいと思います。

問題は、Chromeがタブを開いた直後にタブを閉じ、実際にはURLをロードしないことです。これを実現する唯一の方法は、alert-commandを挿入することですが、これは実用的ではありません。

私もやってみました

chrome.tabs.onCreated.addListener

しかし、それは同じ結果であり、setTimeoutはまったく登録されていないようです。

私のコード:

chrome.browserAction.onClicked.addListener(function(tab){chrome.tabs.create({url: "myApp:add?url =" + encodeURIComponent(tab.url)}、function(tab){alert("あなたのURLはmyAppに追加"); chrome.tabs.remove(tab.id);});});

警告ボックスがない場合にのみ、まったく同じ結果が必要になります。ご協力いただきありがとうございます。

于 2011-02-09T15:17:29.687 に答える
1

これは私のために働いた:

chrome.tabs.create({ url: yourUrl },function(tab){
                                                setTimeout(function(){chrome.tabs.remove(tab.id);}, 200);
                                    });
于 2013-08-22T13:37:39.730 に答える