Не удается выполнить поиск по истории в расширении Chrome

#javascript #google-chrome-extension #browser-history

#javascript #google-chrome-extension #браузер-история

Вопрос:

Я нахожусь в процессе написания расширения для Chrome для отображения пользователями 3 наиболее посещаемых сайтов. (Да, я знаю, что страница «Новая вкладка» уже делает это) Однако всякий раз, когда я пытаюсь запросить историю пользователей, кажется, что весь скрипт завершает работу.

Мои файлы манифеста содержат:

 {
    "name": "Most Visited Sites Test",
    "description": "Show your most visited sites",
    "version": "1.0",
    "background_page": "background.html",
    "app": {
        "launch": {
            "web_url": "http://localhost/*"
        }
    },
    "permissions": [
        "tabs",
        "history",
        "unlimitedStorage",
        "notifications"
    ],
    "icons": {"128": "icon.png" },
    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["contentscript.js"]
        }
    ]
}
  

Итак, я считаю, что это должно дать моей фоновой странице возможность использовать историю. Однако моя фоновая страница содержит:

 function onRequest(request, sender, sendResponse)
{
    alert("Call 1");

    var oneWeekAgo = //Code for getting last weeks date;
    chrome.history.search({
    'text': '',
    'startTime': oneWeekAgo
    },
    function(historyItems)
    {
        // Do stuff...
    });

   alert("Call 2");
};
  

Запрос отправлен с моего contentscript.js

 chrome.extension.sendRequest("foo");
  

При запуске отображается «Вызов 1», но затем с историей ничего не делается, а «Вызов 2» никогда не отображается. Что может быть причиной этого? Прошу прощения, если это простая проблема, но это моя первая попытка использовать законное расширение Chrome.

Ответ №1:

Первое, что я всегда делаю, это открываю консоль, чтобы увидеть, есть ли какие-либо ошибки (перейдите на вкладку расширения и нажмите «background.html «).

Ваш вызов истории верен, так что, возможно, ваш расчет за последнюю неделю неверен? Это то, что работает для меня:

 chrome.history.search({text: "", startTime:(new Date()).getTime()-7*24*3600*1000}, function(items) {
    console.log(items);
});
  

Комментарии:

1. Это странно. Я проверил консоль, и она сообщает мне (Ошибка: у вас нет разрешения на использование ‘history.search’. Обязательно укажите в своем манифесте, какие разрешения вам нужны.) В частности, у меня есть («разрешения»: [ «вкладки», «история», «Неограниченное хранилище», «уведомления»])

2. @Mike Ты запускаешь это из background.html не скрипт содержимого?

3. Скрипт содержимого отправляет запрос в фоновом режиме. html, затем фон. html выполняет chrome.history.search.

4. @Mike Тогда с вашим манифестом что-то не так, если вы опубликуете его, я смогу взглянуть.

5. Поскольку в комментариях нет поддержки переносов строк, я дам вам эту ссылку , я ценю, что вы нашли время просмотреть это.