Плагин для браузера, который может зарегистрировать свой собственный протокол

Новые способы I: fetch

TL; DR Я бы рекомендовал этот способ, пока вам не нужно отправлять синхронные запросы или поддерживать старые браузеры.

До тех пор, пока ваш запрос будет асинхронным, вы можете использовать Fetch API для отправки HTTP-запросов. API-интерфейс fetch работает с обещаниями , что является хорошим способом обработки асинхронных рабочих процессов в JavaScript. С помощью этого подхода вы используете fetch() для отправки запроса и ResponseBody.json() для разбора ответа:

fetch(url)
  .then(function(response) {
    return response.json();
  })
  .then(function(jsonResponse) {
    // do something with jsonResponse
  });

Совместимость: API-интерфейс Fetch не поддерживается IE11, а также Edge 12 & amp ; 13. Однако существуют полиполны .

Новые способы II: responseType

Поскольку Londeren имеет написанный в его ответе , более новые браузеры позволяют использовать свойство responseType для определения ожидаемого формата ответа. Доступ к анализируемым откликам можно получить через свойство response:

var req = new XMLHttpRequest();
req.responseType = 'json';
req.open('GET', url, true);
req.onload  = function() {
   var jsonResponse = req.response;
   // do something with jsonResponse
};
req.send(null);

Совместимость: responseType = 'json' не поддерживается IE11.

Классический способ

Стандартный XMLHttpRequest не имеет свойства responseJSON, только responseText и responseXML. До тех пор, пока биттово действительно отвечает некоторым JSON на ваш запрос, responseText должен содержать код JSON в виде текста, поэтому все, что вам нужно сделать, это разобрать его с помощью JSON.parse():

var req = new XMLHttpRequest();
req.overrideMimeType("application/json");
req.open('GET', url, true);
req.onload  = function() {
   var jsonResponse = JSON.parse(req.responseText);
   // do something with jsonResponse
};
req.send(null);

Совместимость: этот подход должен работать с любым браузером, который поддерживает XMLHttpRequest и JSON.

JSONHttpRequest

Если вы предпочитаете использовать responseJSON , но вы хотите получить более легкое решение, чем JQuery, вы можете проверить мой JSONHttpRequest. Он работает точно так же, как и обычный XMLHttpRequest, но также предоставляет свойство responseJSON. Все, что вам нужно изменить в вашем коде, будет первой строкой:

var req = new JSONHttpRequest();

JSONHttpRequest также предоставляет функции для простой отправки объектов JavaScript как JSON. Более подробно и код можно найти здесь: http://pixelsvsbytes.com/2011/12/teach-your-xmlhttprequest-some-json/ .

Полное раскрытие: я являюсь владельцем Pixels | Bytes. Я думаю, что мой сценарий - хорошее решение проблемы, поэтому я разместил его здесь. Пожалуйста, оставьте комментарий, если вы хотите, чтобы я удалил ссылку.

1
задан Michael Petrotta 4 May 2010 в 17:50
поделиться

1 ответ

Все будет немного сложнее, чем вы думаете.

Вам придется создать целое приложение, а не просто плагин для браузера (этот плагин может быть частью вашего приложения). Причина, по которой я считаю, что это полноценное приложение, заключается в том, что вам нужно будет изменить параметры реестра на клиентской машине, чтобы зарегистрировать ваш пользовательский обработчик URL.

Вот статья MSDN, описывающая, что именно нужно сделать для регистрации пользовательского обработчика URL на клиенте Windows:

Регистрация приложения в протоколе URL

2
ответ дан 3 September 2019 в 00:47
поделиться
Другие вопросы по тегам:

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