Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доступ к переменным javascript до загрузки страницы (chrome). (https://javascript.ru/forum/misc/38221-dostup-k-peremennym-javascript-do-zagruzki-stranicy-chrome.html)

zOdmin 23.05.2013 22:23

Доступ к переменным javascript до загрузки страницы (chrome).
 
Как получить доступ к переменным javascript до загрузки страницы в хроме? И соответственно до того, как выполнятся любые <script> вставки на самой странице?

То есть, предположим код страницы index.html такой:
Код:

<html><head>
<script>
console.log(x); //должно быть 5 при успешном выполнении before.js
</script>
</head></html>


Нужно добавить before.js такого содержания:
x=5;

Как это сделать с помощью контент скрипта расширения? Исходный код страницы (сам файл) менять нельзя, - можно только с помощью расширения вмешаться.

В инете есть советы типа воспользоваться document.head.appendChild(script); Но это работает только при "run_at":"document_end", когда уже поздно. А в случае "run_at":"document_start" никакого head и body еще нету. Как быть?

P.S. Переформилировал свой предыдущий вопрос с другой темы, т.к. там нельзя изменить название темы, пришлось создать новую.

ksa 24.05.2013 09:12

Цитата:

Сообщение от zOdmin
Как получить доступ к переменным javascript до загрузки страницы в хроме? И соответственно до того, как выполнятся любые <script> вставки на самой странице?

Если ничего не загружено - так и переменных нет.

Aetae 24.05.2013 11:20

Х.з. как в хроме, а в ff есть unsafeWindow, которому соответственно можно зафигарить глобальные переменные.
unsafeWindow.x = 5
В хроме тож должно быть что-то такое.

zOdmin 27.05.2013 08:04

Aetae,
спасибо за подсказку. С этим ключевым словом гуглится намного легче, но решить проблему нормальным способом не удалось.

Ранее существовало такое решение для контент скрипта (несмотря на то, что он выполняется в "песочнице" отдельно от страницы) :
(function() {
	var unsafeWindow = (function() {
		var div = document.createElement('div');
		div.setAttribute('onclick', 'return window;');
		return div.onclick();
	})();

	unsafeWindow.x=5;
})();


Однако, начиная с версии 27.0.1447.3 эту возможность прикрыли, хотя в 27.0.1438.7 (dev-m и stable) эта фича еще работала. Ссылка на объект window, конечно, возвращается, но только на объект window из песочницы, в которой крутится контент-скрипт.


Часовой пояс GMT +3, время: 20:41.