Firefox WebExtensions API, как сделать AJAX-вызов на текущей вкладке сайта
Я хочу, чтобы мое веб-расширение осуществляло вызов AJAX на веб-сайт, на который в данный момент смотрит пользователь. Я знаю, что у текущего веб-сайта есть конечная точка, доступная в /foo/bar?query=
,
Что-то мешает мне использовать API выборки или запрос XMLHttpRequest для связи с этой конечной точкой?
Мои попытки использовать эти методы просто говорят мне, что произошла ошибка сервера, и на вкладке сети ничего не появляется, пока я пытаюсь отладить свое расширение. Я чувствую, что для этой задачи должен быть API WebExtensions, но я не могу его найти.
1 ответ
Вы можете получить объект, описывающий текущую вкладку, на которую смотрит пользователь, используя browser.tabs.getCurrent()
, Этот объект имеет свойство url
, который затем можно использовать для создания XMLHttpRequest.
browser.tabs.getCurrent().then(currentTab => {
let xhr = new XMLHttpRequest();
xhr.open("GET", currentTab.url);
// ...
});
Редактировать:
Как отметил Макьен, tabs.currentTab
на самом деле не то, что вы хотите. Вместо tabs.query
с active: true
должен быть использован. Нечто подобное должно работать:
browser.tabs.query({active: true, currentWindow: true}).then(tabs => {
let currentTab = tabs[0];
let xhr = new XMLHttpRequest();
xhr.open("GET", currentTab.url);
// ...
})
Для того, чтобы отправлять запросы из разных стран, вам необходимо получить разрешение на manifest.json
файл:
{
...
"permissions": [
"tabs",
"<all_urls>"
],
...
}
<all_urls>
например, позволит вам сделать http-запросы на любой URL.
Вы можете прочитать больше здесь.