私のマニフェストは次のようになります。
{
"manifest_version": 2,
"name": "Facebook Extension",
"version": "1.0",
"browser_action": {
"default_icon": "images/fbh.png",
"default_popup": "fbh-popup.html"
},
"permissions": [
"storage",
"background",
"tabs",
"http://www.facebook.com/*",
"https://www.facebook.com/*"
],
"content_scripts": [
{
"matches": [
"http://www.facebook.com/*",
"https://www.facebook.com/*"
],
"js": ["js/jquery-1.9.1.min.js", "js/fbh-main.js"],
"css": ["css/fbh-main.css"],
"run_at": "document_end"
}
],
"background":{
"persistent": true,
"scripts": ["js/jquery-1.9.1.min.js","js/fbh-background.js"]
}
}
Facebook 内の新しいページに移動するたびに、コンテンツ スクリプトを挿入したいと考えています。たとえば、ユーザーのプロファイルをクリックすると、コンテンツ スクリプトが挿入されます。
私のバックグラウンドページには、次のリスナーがあります。
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
console.log(changeInfo);
if (changeInfo.status === 'complete') {
chrome.tabs.executeScript(null, {file: "js/fbh-main.js"});
}
});
ただし、これにはいくつかの問題があります。まず、この関数はコンテンツ スクリプトをすべてのページに挿入しようとします。マニフェストのアクセス許可を読み取ることができる必要があります。第 2 に、www.facebook.com から開始すると、コンテンツ スクリプトが本来の機能を実行します。しかし、そこから「foo」のプロファイルをクリックして www.facebook.com/foo に移動すると、コンテンツ スクリプトが挿入されます (console.log メッセージで証明されます) が、想定されていることを実行しません。 . www.facebook.com/foo に直接移動すると、コンテンツ スクリプトが読み込まれ、機能するため、挿入が早すぎると思います。
これを行うより良い方法はありますか?