サーバーに自動的にログインするための拡張機能を作成したいと思います。そこで、現在のURLを確認するためのバックグラウンドページを作成し、それが自分のURL正規表現に準拠している場合は、ページアクションアイコンを表示します。ページアクションをクリックすると、いくつかのフィールドを含むポップアップが開きます。現在開いているURLを取得し、ポップアップのフィールドの1つに入力する必要があります(標準のブックマークページアクションをクリックすると、開いたポップアップにURLが自動的に入力されます)。Chrome拡張機能でこのようなことをするにはどうすればよいですか?バックグラウンドページからポップアップHTMLへのメッセージパッシングを試しましたが、機能しません。そのようなメッセージを送ることは可能ですか?また、ポップアップhtmlファイルのonloadを設定しようとしましたが、トリガーされていないことに気付きました。このシナリオに対処するための適切な方法を提案してください。
質問する
21616 次
2 に答える
47
chrome.tabs.query
次のパラメータで使用します。
- queryInfoオブジェクト:
active: true
-アクティブなタブを取得するにはlastFocusedWindow: true
-アクティブなウィンドウを選択するには
- コールバック関数:
この関数は1つの引数を受け取ります:一致したタブの配列。アクティブにできるウィンドウは1つだけであり、このウィンドウ内のタブは1つだけなので、配列には1つの要素しかありません。Tab
この要素は、署名を持つオブジェクトです。
コードスニペット:
// Do NOT forget that the method is ASYNCHRONOUS
chrome.tabs.query({
active: true, // Select active tabs
lastFocusedWindow: true // In the current window
}, function(array_of_Tabs) {
// Since there can only be one active tab in one active window,
// the array has only one element
var tab = array_of_Tabs[0];
// Example:
var url = tab.url;
// ... do something with url variable
});
これが機能するには、activeTab
許可で十分です。
于 2012-05-02T15:54:15.807 に答える
4
また、Promiseを使用して、タブを取得するためのよりクリーンな方法を使用することもできます。
getCurrentTab().then(function(tab){
// Do something w/tab
});
function getCurrentTab(){
return new Promise(function(resolve, reject){
chrome.tabs.query({
active: true, // Select active tabs
lastFocusedWindow: true // In the current window
}, function(tabs) {
resolve(tabs[0]);
});
});
}
于 2015-06-14T01:39:42.490 に答える