Используя jQuery.getJSON в Расширении Chrome

Я должен сделать междоменный запрос в хромовом расширении. Я знаю, что могу он через передачу сообщений, но я придерживался бы просто идиом jQuery (таким образом, мой JavaScript может также работать a

3 ответа

Увы, ничего из этого не сработало, поэтому я закончил тем, что сделал связь через background.html.

background.html

<script src="http://code.jquery.com/jquery-1.4.2.js"></script>
<script>
function onRequest(request, sender, callback) {
  if (request.action == 'getJSON') {
    $.getJSON(request.url, callback);
  }
}

chrome.extension.onRequest.addListener(onRequest);
</script>

javascripts/page.js

chrome_getJSON = function(url, callback) {
  console.log("sending RPC");
  chrome.extension.sendRequest({action:'getJSON',url:url}, callback);
}

$(function(){
  // use chrome_getJSON instead of $.getJSON
});
8
ответ дан 8 December 2019 в 18:34
поделиться

Если вы укажете "api.flickr.com" в файле manifest.json , вам не нужно будет использовать обратный вызов JSONP, стиль внедрения сценария для междоменного запроса.

Например:

"permissions": ["http://api.flickr.com"],

Это должно прекрасно работать в вашем коде. Я бы удалил параметр строки запроса «& jsoncallback», поскольку работа с JSONP не требуется.

Причина, по которой ваш текущий код не работает, заключается в том, что ваш код внедряется в страницы DOM, сценарии содержимого имеют доступ к DOM, но не имеют доступа к контексту javascript, поэтому нет метода для вызова обратного вызова.

3
ответ дан 8 December 2019 в 18:34
поделиться

Синтаксис немного неправильный. Нет необходимости в callback( бите. Это работает безупречно. Проверено в консоли javascript в Chrome на этой странице StackOverflow (которая включает jQuery):

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data) {
  console.log(data);
});
0
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: