Chrome=拡張機能を作成しており、その一部で、ポップアップページのボタンがクリックされたときに現在のタブのタイトルとURLを取得する必要があります。
私は以前Chromeのメッセージパッシングシステムを使用してきましたが、多くの努力の結果、多くの場合それを機能させることができました。ただし、ポップアップページでそれらを使用する必要はなかったので、読んだことから、実行するのははるかに困難です。
これまでに把握できたタイムラインは次のとおりです。
popup.html
/popup.js
:ボタンがクリックされたpopup.html
/popup.js
:リクエスト/メッセージがコンテンツスクリプトに送信されますcontentScript.js
:リクエスト/メッセージはポップアップページから受信されますcontentScript.js
:現在のタブのタイトルとURLは変数に保存されますcontentScript.js
:2つの変数は文字列化された応答として送信されますpopup.html
/popup.js
:2つの変数は応答から解析されます通常、私はこれを理解することができるでしょうが、私は作品の中でスパナを投げたいくつかのことを読みました:
chrome.tabs.getSelected
は、バックグラウンドページ/スクリプトでのみ使用できます。これは、コンテンツスクリプトをまったく使用する必要がないことを意味しますか?私はすでにChromeのメッセージパッシングシステムが十分に難しいと感じましたが、これは私を完全に混乱させました。したがって、この投稿。
chrome.tabs.getSelected
は非推奨です。 chrome.tabs.query
代わりに。
chrome.tabs.query
には2つのパラメータが必要です。クエリオブジェクトと、結果のタブの配列をパラメータとして受け取るコールバック関数です。
「現在のタブ」を取得するには、現在アクティブで現在のウィンドウにあるすべてのタブを照会します。
var query = { active: true, currentWindow: true };
クエリは現在のタブのみを含むTab配列を返すため、コールバックの最初の要素を必ず取得してください
function callback(tabs) {
var currentTab = tabs[0]; // there will be only one in this array
console.log(currentTab); // also has properties like currentTab.id
}
その他:
chrome.tabs.query(query, callback);