Расширение Chrome (сделано в соответствии с официальным руководством) не работает
https://developer.chrome.com/extensions/getstarted
Этот учебник все еще в порядке? Я загрузил все metioned файлы, и расширение не работает. Я думаю, что есть проблема, связанная с запросом Ajax.
Я получил сообщение:
Невозможно отобразить изображение. Нет ответа от Google Image.
Я попытался выполнить запрос Ajax на другой сайт, но оказалось, что запрос выполняется локально - несмотря на разрешения в файле menifest.json.
Ответы
Ответ 1
В этом примере внутри popup.js в строке 60 выполняется вызов https://ajax.googleapis.com/ajax/services/search/images. Теперь это истекло.
Вы можете проверить, предоставив аргумент запроса. Например,
https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=chrome даст ответ "Этот API больше не доступен".
Этот форум обсуждает список альтернативных API поиска.
https://groups.google.com/forum/#!topic/Google-AJAX-Search-API/Ao9TbQbYgHo
Ответ 2
Да, так это все еще сломан. Я закрепил файл popup.js(ссылка ниже) для работы с googleapis (упоминается в альтернативах, опубликованных UberHans). Я попытался найти исходный репо для изменения PR, но такой удачи не было.
В popup.js требуется добавить ключи cx и api. Если вы читаете код, должно быть довольно ясно, что вам нужно изменить и как получить требуемые ключи cx и api.
https://gist.githubusercontent.com/CrashenX/c4f80340b67e87f13753fb30554f6f01/raw/d8f335d9abe699a63e15d8baec10542e9989a88c/popup.js
UPDATE: если это помогает, вот чем отличается между предоставлением google и тем, что я сделал, чтобы заставить образец работать (cx и key vars необходимо обновить с помощью действительного cx и ключа для работы):
59,61c59,66
< // https://developers.google.com/image-search/
< var searchUrl = 'https://ajax.googleapis.com/ajax/services/search/images' +
< '?v=1.0&q=' + encodeURIComponent(searchTerm);
---
> // https://developers.google.com/custom-search/json-api/v1/using_rest
> var cx = 'insert-your-cx-from:https://cse.google.com'
> // WARNING: Hard-coding your api key in code is really insecure
> var key = 'insert-your-key-from:https://console.developers.google.com'
> var searchUrl = 'https://www.googleapis.com/customsearch/v1?searchType=image'
> + '&cx=' + encodeURIComponent(cx)
> + '&key=' + encodeURIComponent(key)
> + '&q=' + encodeURIComponent(searchTerm);
69,72c74,76
< if (!response || !response.responseData || !response.responseData.results ||
< response.responseData.results.length === 0) {
< errorCallback('No response from Google Image search!');
< return;
---
> if (!response || !response.items || !response.items.length) {
> errorCallback('No response from Google Image search')
> return;
74c78
< var firstResult = response.responseData.results[0];
---
> var firstResult = response.items[0];
77,79c81,83
< var imageUrl = firstResult.tbUrl;
< var width = parseInt(firstResult.tbWidth);
< var height = parseInt(firstResult.tbHeight);
---
> var imageUrl = firstResult.image.thumbnailLink;
> var width = parseInt(firstResult.image.thumbnailWidth);
> var height = parseInt(firstResult.image.thumbnailHeight);
Ответ 3
Если вам действительно не нужна эта особенность, вы можете попробовать другие образцы
https://developer.chrome.com/extensions/samples
Это та же идея