コードに問題はほとんどありません
a)閲覧しているタブではなくバックグラウンドページにいる
b)$ .attr()はバックグラウンドページで認識されません。
c)更新するタブに対する権限がありません。
次のサンプルは、機能を実現できます。
参照:
a)マニフェストファイルとパターン
b)tabs.query() :インストール前にすべてのタブをフェッチするため
c)tabs.onUpdated.addListener :インストール後に新しいタブをフェッチするため
d)chrome.tabs.update :すべてのタブのURLを変更します。
デモンストレーション
マニフェスト.json
マニフェストに対してすべての権限が利用可能であることを確認します
{
"name": "URL Change",
"version": "0.0.1",
"manifest_version": 2,
"description": "This demonstrates how chrome extension Changes URL",
"background":{
"scripts":["background.js"]
},
"permissions": ["tabs","http://www.youtube.com/*"]
}
background.js
これにより、 http://www.youtube.com/ URLを使用してインストールした後、既存のすべてのタブと新しく作成されたすべてのタブがhttp://www.youtube.com/feed/subscriptions/uに更新されます。
//Take tabId as input and change its URL
var changeURL = function (tabId) {
//Update its URL
chrome.tabs.update(tabId, {
"url": "http://www.youtube.com/feed/subscriptions/u"
}, function (tab) {
//Notification for success
console.log("Tab Updated");
});
}
//Query All tabs with URL's http://www.youtube.com/ when extension is installed for first time
chrome.tabs.query({
"url": "http://www.youtube.com/"
}, function (tabs) {
//For every tab change URL by Passing Id
for (tab in tabs) {
changeURL(tabs[tab].id);
}
});
//When ever a new tab is created this changes URL
chrome.tabs.onUpdated.addListener(function (tabId, info, tab) {
//Fetch a tab where URL is http://www.youtube.com/ and is not loaded yet
if (info.status == "loading" && info.url == "http://www.youtube.com/") {
//Change URL by passing Id of tab
changeURL(tabId);
}
});
出力:
さらに情報が必要な場合はお知らせください。