рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ рдмрд╛рд░ Chrome рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗредрдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдХреНрд░реЛрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреНрд░реЙрд╕-рдСрд░рд┐рдЬрдирд▓ рдЕрдиреБрд░реЛрдз рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╕реАрдзреЗ рдХреБрдЫ рддреГрддреАрдп-рдкрдХреНрд╖ API рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреНрд░реЙрд╕-рдСрд░рд┐рдЬрд┐рди рд░реАрдб рдмреНрд▓реЙрдХрд┐рдВрдЧ (CORB) рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЕрд╡рд░реБрджреНрдз рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг:рдкреБрд░рд╛рдиреА рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:var itemId = 12345;
var url = "https://another-site.com/price-query?itemId=" +
encodeURIComponent(request.itemId);
fetch(url)
.then(response => response.text())
.then(text => parsePrice(text))
.then(price => ...)
.catch(error => ...)
рдирдИ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:chrome.runtime.sendMessage(
{contentScriptQuery: "queryPrice", itemId: 12345},
price => ...);
рдирдИ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.contentScriptQuery == "queryPrice") {
var url = "https://another-site.com/price-query?itemId=" +
encodeURIComponent(request.itemId);
fetch(url)
.then(response => response.text())
.then(text => parsePrice(text))
.then(price => sendResponse(price))
.catch(error => ...)
return true;
}
});
рдЗрд╕ рддрдереНрдп рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддред URL рдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрджреЗрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ URL рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рддреЛ, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП URL contentScriptQuery рдФрд░ itemId рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдПрдХ "рдЦрд░рд╛рдм" рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрджрд╛рд╣рд░рдг, рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛:{
contentScriptQuery: "fetchUrl",
url: "https://example.com/any/path/or/site/allowed/here"
}
рдкреБрдирд╢реНрдЪ: рдореИрдВрдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ , рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╣реИ, рдФрд░ рдЬрдм рдореИрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдХреНрд░реЛрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВред рджреВрд╕рд░реЗ рджрд┐рди, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдХреЙрд░реНрдмред рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рди рдЖрдПред