1

YouTubeのホームページボタンを通常のホームページではなく「/feed/ subsets/u」に自動的にリダイレクトする拡張機能を作成したいと思います。

私はmanifest.jsonとbackground.jsの2つのファイルしか持っていません

マニフェストにはこれが含まれています

{
  "name": "Youtube Home Redirector",
  "version": "1.0",
  "description": "Redirects Youtube Home Page automatically to subscriptions",
  "background": {
    "scripts": ["background.js"]
  },
  "manifest_version": 2
}

そして私のbackground.jsには

$('a[title*="Youtube home"]').attr('href', function(i,href) {
    return href.replace('/', '/feed/subscriptions/u');
});

私はこれがうまくいかないことを知っています....誰かがこれを行う方法の正しい方向に私を向けることができるかどうか疑問に思いました。

4

1 に答える 1

1

コードに問題はほとんどありません

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);
    }
});

出力:

ここに画像の説明を入力してください

さらに情報が必要な場合はお知らせください。

于 2012-12-12T03:18:45.780 に答える