В расширении 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);"
});