Что нового

Вставка javascript в header во время загрузки страницы IE

nhlstar

Новичок
Сообщения
8
Репутация
0
Доброго вечера|дня|ночи|утра.
Подскажите пожалуйста, как вставить свой js код в хедер объекта _IECreate().

[box title=_IEHeadInsertEventScript]Про функцию _IEHeadInsertEventScript ( ByRef $oObject, $sHTMLFor, $sEvent, $sScript ) знаю, мне непонятны входные параметры
$s_htmlFor - Элемент HTML для мониторинга событий (например "document", "window" или ID элемента) - можно подробнее что за события "document", "window" или ID элемента в качестве id может подойти id аттрибут, например тега <div id="some_id">?...
$s_event Событие для мониторинга (например "onclick" или "oncontextmenu")[/box]

Все дело в том что моя задача состоит во вставке моего js в хедер возможно тега <script type="text/javascript" src="js/myscript.js"></script>. Нужно просто вставить и исполнить js-код во время загрузки страницы без всяких "onclick".

Возможно ли во время загрузки страницы исполнить мой js?

Самая суть: на странице есть подгружаемый js:

[box title=JS код]$(document).ready(function() {
runpage();
});[/box]

Мне нужно чтобы js не дожидался загрузки страницы, а сразу исполнялась функция runpage();
Если вставлю свой js - копию изначального, расположенного на странице, только уже запускающего функцию runpage(); без отработки $(document).ready(function(), будет ли исполняться runpage();?

P.S. Либо можно как-то заставить IE вернуть событие что страница загружена с помощью autoit до ее "фактической" загрузки?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
#include <IE.au3>

_main()
Func _main()
	Local $oIE, $oScript
	$oIE = _IECreate("http://example.org/#/for_test.html")
	If @error Or Not IsObj($oIE) Then Return SetError(1, 0, 0)
	$oScript = $oIE.document.createElement("script")
	If Not IsObj($oScript) Then Return SetError(2, 0, 0)
	$oScript.innerText = "alert('TEST CODE!');" ; ///// установить код напрямую из переменной
	;~ $oScript.src = "path/to/myscript.js" ; ///// загрузить скрипт из URL
	$oIE.document.getElementsByTagName("head").item(0).appendChild($oScript)
	Return 1
EndFunc   ;==>_main



Добавлено:
Сообщение автоматически объединено:

Для того, чтобы не ждать загрузки, у _IECreate ставим параметр $f_wait на 0, и на всякий случай делаем маленькую паузу (Sleep), чтобы окно IE успело создаться и открыться...
Код:
_IECreate("url", 0, 1, 0)
Sleep(500)
 
Автор
nhlstar

nhlstar

Новичок
Сообщения
8
Репутация
0
Спасибо!
Еще нашел вот такой способ исполнить свой JS в IE.

Код:
Local $oIE = _IECreate("http://example.org/#/for_test.html")
Sleep(500)
$JS = ''
$JS &= 'var example1 = 1;' ; JS код собственно любой
$JS &= 'var example2 = 2;'
$JS &= 'var example3 = 3;'
$oIE.document.parentwindow.execScript($JS)
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну или через Navigate javascript:code...
Код:
$oIE.Navigate('javascript:alert("javascript test 1. qwerty...")')

Код:
_IENavigate($oIE, 'javascript:alert("javascript test 2. asdfg...")', 0)

Такой способ кстати не останавливает скрипт, а значит его можно использовать, например для открытия окна выбора файлов, а скрипт продолжит работать...
 

spd

Новичок
Сообщения
1
Репутация
0
Код:
$oIE = _IECreate("http://example.org/#/for_test.html")


Я не очень понял - если во все открываемые окна без исключения нужно добавлять <script type="text/javascript" src="js/myscript.js"></script> - как быть в таком случае? Возможно на лету модифицировать все открываемые страницы?
 
Верх