Могу ли я создать расширение для Google Chrome для страниц Chrome (загрузки, расширения и т. Д.)? - PullRequest
3 голосов
/ 27 апреля 2011

Я хотел бы сделать очень простые расширения, которые немного изменят внешний вид страницы загрузок.Изменение страницы истории также может быть интересным, но это на будущее.

Есть ли способ сделать это?

Я попытался создать расширение Content Script, с"chrome://downloads" как match в manifest.json.Chrome не позволяет этого и выдает ошибку при упаковке расширения.

Есть ли другой простой способ? Он должен быть простым, потому что изменения будут простыми, потому что все chrome:// страницы построены с использованием HTML, JS и CSS.

edit
После небольшой попытки с фоновыми сценариями ...

Я не могу получить chrome.tabs.executeScript работать!Я добавил в background.html:

chrome.browserAction.onClicked.addListener(function(tab) {
    alert(this.document.body.innerHTML);
    alert(chrome.tabs.executeScript(null, {
        code : "document.body.style.backgroundColor = 'red';"
    }));
});

И добавил в manifest.json, чтобы добавить (невидимую) «кнопку действия браузера»:

    ,"browser_action": {
/*      "popup": "background.html",*/
        "name": "Alter page"
    }

Событие onClickedзапускает оба оповещения (первое - это тело background.html, второе - undefined).Но код (строка с document.body.style.backgroundColor = 'red';) не выполняется!И, конечно же, нет никакой отладки для таких расширений =)

Любые советы кто-нибудь?Я пытаюсь ухватиться за вкладку window.document ( не background.html s window.document!).Внедренный скрипт (это то, что должен делать chrome.tabs.executeScript) должен сделать это.

PS
Я краду из make_page_red / manifest и make_page_red / background.html
У меня есть «расширение»: http://hotblocks.nl/js/downloads.rar

РЕДАКТИРОВАТЬ
Я понял, чего хочу достичь,возможно только с CSS.Мне не нужно вводить JavaScript.Это облегчает?Это делает это возможным?=)

Ответы [ 3 ]

4 голосов
/ 27 апреля 2011

Согласно этой документации , chrome:// URL-адреса являются недопустимой схемой, поэтому они не будут совпадать:

Шаблон соответствия - это, по сути, URL-адрес, который начинается с разрешенной схемы (http, https, file или ftp) и может содержать символы *.

Я бы хотел вместо этого использовать переопределить страницы .


В соответствии с просьбой, вот мое расширение, которое может по крайней мере загружаться при загрузке chrome://downloads, хотя, как я уже сказал, я не думаю, что вы можете изменить страницу, даже если вы знаете, что это страница, которую вы просматриваете.

manifest.json

{
    "name": "Test",
    "version": "0.0.1",
    "background_page": "background.html",
    "permissions": [
        "tabs"
    ]
}

background.html

<script>
    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab)
    {
        if (tab.status == "complete")
        {
            alert(tab.url);
            // should alert 'chrome://downloads' on that page. You can 
            // check for this url here and then do whatever you want
        }
    });
</script>
3 голосов
/ 05 мая 2011

Обновление: начиная с Chrome 31, есть API для расширений, который позволяет получить доступ к загрузкам Chrome: https://developer.chrome.com/extensions/downloads

Также есть API, который позволяет получить доступ к списку и управлять другими установленными расширениями: https://developer.chrome.com/extensions/management


(Предыдущий ответ)

К сожалению, в настоящее время нет API для расширений Chrome для доступа к информации о загрузках пользователя.Это широко востребованная функция, и некоторые разработчики Chrome обсуждают ее здесь: http://code.google.com/p/chromium/issues/detail?id=12133

Отметьте проблему, если это функция, которую вы хотели бы видеть, и вы будете получать обновления по электронной почте.

1 голос
/ 03 мая 2011

Как показывает эта страница, нет API для переопределения страницы загрузки. ... Однако есть способ заставить созданный вами файл заменить страницу chrome://downloads/ всякий раз, когда он загружается с использованиемjavascript в вашем background page ...

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
  if(changeInfo.status === "loading"){
    if(tab.url === "chrome://downloads/"){
      chrome.tabs.update(tab.id, {url: "REPLACEMENT.html"});
    } 
  }
});

По сути, это то, что это делает - как только страница chrome://downloads начинает загружаться (используя tabs.onUpdated API ),страница перенаправляется на REPLACEMENT.html (с использованием tabs.update API ) ... Нет видимой задержки при обновлении вкладки, так как этот скрипт запускается до того, как страница chrome://downloads начинает загружаться ... Вы можетеиспользуйте аналогичный код в вашем файле, нажав CTRL + U на странице загрузок, чтобы просмотреть и скопировать его исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...