Как сделать POST от chrome .tabs.create - PullRequest
0 голосов
/ 15 апреля 2020

В расширении Chrome у меня есть запрос POST, который я хочу начать в новой вкладке. Запрос выглядит следующим образом:

(function (d) {
    var f = d.createElement('form');
    f.action = 'http://gtmetrix.com/analyze.html?bm';
    f.method = 'post';
    var i = d.createElement('input');
    i.type = 'hidden';
    i.name = 'url';
    i.value = document.location.href;
    f.appendChild(i);
    d.body.appendChild(f);
    f.submit();
})(window.open().document);

Быстрый и грязный способ, которым я получил его, был chrome.tabs.executeScript({file: "post.js"}) из background.js.

Недостатком этого решения являются широкие разрешения : они должны быть установлены как "http://*/*","https://*/*",.

Q1 : это большая вещь, такие широкие разрешения? Следует ли их избегать?

Q2 : если да, как я могу правильно сделать chrome.tabs.create с этим кодом? Я пробовал это так:

  • я определил переменную (currentUrl) для текущего URL-адреса, чтобы заменить document.location.href, который не будет работать в background.js,
  • чем я пытался принять хак из этой темы , но безуспешно: новая пустая вкладка открывается, но не более ...

Это было мое усыновление:

chrome.tabs.create({
    "url": "javascript:(function(d){var f=d.createElement('form');f.action='https://gtmetrix.com/analyze.html?bm';f.method='post';f.target='_blank';var i=d.createElement('input');i.type='hidden';i.name='url';i.value=currentUrl;f.appendChild(i);d.body.appendChild(f);f.submit();})(document);"
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...