LINUX.ORG.RU

[javascript][firefox] загрузить javascript после onpageload


0

1

Имею javascript-код, отрабатывающий в событии onpageload в chrome (неймспейсе, в котором работают аддоны, а не Google Chrome), не имеющий доступа к javascript-объектам и функциям, определенными на странице, которые мне, конечно же, очень надо вызвать.

Поступаю следующим образом:

// Работает
		var script = doc.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.innerHTML = 'function alert_1() { alert("1"); }';
		var body = doc.getElementsByTagName('body')[0];
		body.appendChild(script);
		start.setAttribute('onclick', 'alert_1()');

При нажатии на start alert отрабатывает - отлично. Проблема в том, что в реальной задаче нужно выполнить достаточно сложный код, пихать который в однострочник ни руками, ни генераторами кода не хотелось бы. start.AddEventHandler('click', function alert_1() { ... }, ..) отпадает по той причине, что в реальной задаче потребуется вызывать функции, определенные в javascript-е страницы, а как мы помним, из chrome такая возможность недоступна.

Решение кажется очевидным - подгрузить код из внешнего файла через аттрибут src:

		var script = doc.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.setAttribute('src', 'chrome:///myext/contents/alert_1.js');
		var body = doc.getElementsByTagName('body')[0];
		body.appendChild(script);
		start.setAttribute('onclick', 'alert_1()');
Но не тут-то было. Код, подгруженный тегом <script>, виден в firebug, но не отрабатывает. Соответственно, при нажатии на start в консоли видно сообщение об отсутствии метода alert_1().

Судя по всему, javascript элементарно не подгружается из-за того, что страница, вроде как, уже загружена. Можно ли как-то силой заставить его подгрузиться?

★★★

>реальной задаче потребуется вызывать функции, определенные в javascript-е страницы, а как мы помним, из chrome такая возможность недоступна.

не совсем так. Ты можешь посылать странице любые события, вызывая тем самым выполнение повешанных на них обработчиков

nu11 ★★★★★ ()

посмотри, например, как в YUI сделано.

там есть штука для подгрузки модулей налету. YUI.use

aol ★★★★★ ()
Ответ на: комментарий от nu11

Это я уже читал. Но в итоге проблема решилась (отсылаю события элементам страницы).

Minoru ★★★ ()

>событии onpageload

on

pageload



onpageload это не событие, если совсем уж точно.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.