Расширение Chrome - как получить оригинальный window страницы?
Не нашёл раздела по написанию расширений браузера...
Браузер Chrome. Решил оформить одну из штук в виде расширения. Пытаюсь работать с window, но судя по всему он подменяет настоящий window на какой-то левый. Как бы добыть window самой страницы? |
Вот так показывает нужное, любые другие нагугленные способы выдают нечто иное...
async function Inject(ScriptCode = '') { let ScriptNode = document.createElement('script'); ScriptNode.type = 'text/javascript'; ScriptNode.text = ScriptCode; document.head.appendChild(ScriptNode); }; Inject('alert("Inject"); console.info("[Inject] window:", window);'); |
Цитата:
Глобальная область видимости (window) всегда только одна и доступна только одному потоку исполнения. Расширение и страница выполняются в разных процессах и контекст исполнения у них разный. Для таких задач в расширениях используют content script |
let CodeURL = chrome.runtime.getURL('Test.js'); document.body.insertAdjacentHTML('beforeend', '<script id="MyScriptNodeA" src="' + CodeURL + '"></script>'); document.body.insertAdjacentHTML('beforeend', '<script id="MyScriptNodeB"></script>'); document.getElementById('MyScriptNodeB').src = CodeURL;Появились оба узла. Ссылка верная, если открыть её в новом окне - открывается то что нужно. Но при этом код не исполняется, без ошибок в консоли. Если так: let ScriptNode = document.createElement('script'); ScriptNode.id = 'MyScriptNodeC'; ScriptNode.type = 'text/javascript'; ScriptNode.src = CodeURL; document.head.appendChild(ScriptNode);то тоже не исполняется, а в консоли пишет: Цитата:
|
Svorg, смотрите консоль расширения.
Возможно доступ к файлу не разрешен в директории web_accessible_resources манифеста. |
В дополнение: https://developer.chrome.com/extensi...scripts#frames
|
Часовой пояс GMT +3, время: 13:48. |