#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. Поскольку в комментариях нет поддержки переносов строк, я дам вам эту ссылку , я ценю, что вы нашли время просмотреть это.