1

我想创建一个扩展程序,它会自动将 youtube 主页按钮重定向到“/feed/subscriptions/u”,而不是通常的主页。

我只有两个文件 manifest.json 和 background.js

清单包含这个

{
  "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/*"]
}

背景.js

这可确保使用http://www.youtube.com/安装后的所有现有标签和所有新创建的标签都更新为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 回答