Próbowałem wielu sposobów (wszystkie udokumentowane procedury) wstrzyknąć skrypt do konkretnej strony po sprawdzeniu adresu URL w onUpdated.addListener. W końcu poniższy kod z "executescript" wydaje się działać, ale nie idealnie. Mogłem otrzymywać alerty, ale nie mogę znaleźć elementów dokumentu na stronie za pomocą metody getElementById/getElementsByName.zasoby muszą być wymienione w web_accessible_resources oczywistego klucza, aby być ładowane przez strony poza rozszerzeniem
Po przejrzeniu strony skrypt zostaje wstrzyknięty. Ale w konsoli błędów uzyskać:
Odmowa obciążenia chrom-extension: //jfeiadiicafjpmaefageabnpamkapdhe/js/Leoscript.js. Zasoby muszą być wymienione w kluczu manifestu web_accessible_resources, aby mogły być ładowane przez strony spoza rozszerzenia.
manifest.json:
{
"name": "Leo Extension for Job Boards",
"version": "1.6",
"manifest_version": 2,
"content_security_policy": "script-src 'self'; object-src 'self'",
"description": "Leo Extension",
"background": {
"scripts": ["js/Leojshelper.js"],
"persistent": true
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["js/eventPage.js"],
"run_at" : "document_start"
}
],
"icons":{"48":"images/bob48.png", "128":"images/bob128.png"}, //Define any icon sizes and the files that you want to use with them. 48/128 etc.
"browser_action": {
"default_icon": "images/bob.png", // What icon do you want to display on the chrome toolbar
"default_popup": "LeoExtwatch.html" // The page to popup when button clicked.
},
"permissions": [
"tabs", "<all_urls>" // "http://*/*","https://*/*" // Cross Site Access Requests
],
"web_accessible_resources": ["js/LeoScript.js"]
}
Mam również zgodę 'web_accessible_resources' do skryptu, ale bez powodzenia. Kod skryptu w tle:
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete') {
if (tab.url.indexOf("in.yahoo") !== -1) {
chrome.tabs.update(tabId, { url: "https://login.yahoo.com/config/mail?.intl=us" });
chrome.tabs.executeScript(tabId, {
code: "document.body.appendChild(document.createElement('script')).src='" +
chrome.extension.getURL("js/LeoScript.js") + "';"
}, null);
kod w LeoScript.js, które będą wstrzykiwane do konkretnej strony.
$(document).ready(function() {
alert('injected');
document.getElementById('username').value='aaaaaaa';
});
Skrypt zawartości: eventPage.js, który został użyty do wstrzyknięcia skryptu.
var script = document.createElement('script');
script.src = chrome.extension.getURL("js/Leoscript.js");
(document.body || document.head || document.documentElement).appendChild(script);
Proszę wskazać mi wszelkie zmiany w powyższym kodzie, które rozwiążą problemy z uprawnieniami. Z góry dziękuję.
@ 方 觉: Dzięki za odpowiedź, zmęczony już teraz, ale ten sam wynik "Odmowa obciążenia LeoScirpt: Zasoby muszą być wymienione na stronie internetowej_accessible_resources –
Próbowałem znowu i rzeczy wydawały się dziwne. chrome.tabs.executeScript (tabId, {code: ...}) się powiodło, a chrome.tabs.executeScript (tabId, {file: ...}) nie powiodło się (mimo że kod jest taki sam). –
Zaktualizowano ponownie. Proszę spojrzeć. @VineelGogineni –