Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.12.2018, 13:48
Аспирант
Отправить личное сообщение для Svorg Посмотреть профиль Найти все сообщения от Svorg
 
Регистрация: 16.11.2018
Сообщений: 38

Расширение Chrome - как получить оригинальный window страницы?
Не нашёл раздела по написанию расширений браузера...

Браузер Chrome. Решил оформить одну из штук в виде расширения.
Пытаюсь работать с window, но судя по всему он подменяет настоящий window на какой-то левый.
Как бы добыть window самой страницы?
Ответить с цитированием
  #2 (permalink)  
Старый 12.12.2018, 13:55
Аспирант
Отправить личное сообщение для Svorg Посмотреть профиль Найти все сообщения от Svorg
 
Регистрация: 16.11.2018
Сообщений: 38

Вот так показывает нужное, любые другие нагугленные способы выдают нечто иное...
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);');
Ответить с цитированием
  #3 (permalink)  
Старый 12.12.2018, 14:56
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 997

Сообщение от Svorg Посмотреть сообщение
Не нашёл раздела по написанию расширений браузера...

Браузер Chrome. Решил оформить одну из штук в виде расширения.
Пытаюсь работать с window, но судя по всему он подменяет настоящий window на какой-то левый.
Как бы добыть window самой страницы?
Никак.
Глобальная область видимости (window) всегда только одна и доступна только одному потоку исполнения.
Расширение и страница выполняются в разных процессах и контекст исполнения у них разный.
Для таких задач в расширениях используют content script
Ответить с цитированием
  #4 (permalink)  
Старый 12.12.2018, 16:08
Аспирант
Отправить личное сообщение для Svorg Посмотреть профиль Найти все сообщения от Svorg
 
Регистрация: 16.11.2018
Сообщений: 38

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);
то тоже не исполняется, а в консоли пишет:
Цитата:
Main.js:10 GET chrome-extension://invalid/ net::ERR_FAILED
хотя в CodeURL нормальное полное значение, где он взял путь с /invalid/ не понимаю.
Ответить с цитированием
  #5 (permalink)  
Старый 12.12.2018, 16:17
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,432

Svorg, смотрите консоль расширения.
Возможно доступ к файлу не разрешен в директории web_accessible_resources манифеста.
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2019, 16:57
Аспирант
Отправить личное сообщение для Svorg Посмотреть профиль Найти все сообщения от Svorg
 
Регистрация: 16.11.2018
Сообщений: 38

В дополнение: https://developer.chrome.com/extensi...scripts#frames
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции страницы из расширения chrome nontxt Events/DOM/Window 0 09.02.2015 10:42
Как получить свойсвто объекта? Armen Общие вопросы Javascript 4 19.10.2014 06:45
chrome firebug lite и прокрутка страницы в самый низ cmygeHm Общие вопросы Javascript 3 28.02.2012 13:34
Как выводить часть элементов страницы через javascript Victim Events/DOM/Window 9 28.12.2011 21:51
Как получиться доступ к элементам не своей страницы? AlkaLoiD Общие вопросы Javascript 4 29.11.2010 12:47