Как вы можете добавить ресурсы Javascript в самый низ xpage?

Мне нужно включить файл javascript прямо в конец xpage, чтобы он загружался после кода события XSP.addOnLoad, который генерируется автоматически, например.

XSP.addOnLoad(function() {
XSP.attachEvent....
}
<script src="my.js">

В идеале я хочу включить его как часть темы, но если я это сделаю, он попадет в раздел HEAD.

Так что я тоже могу .. - Укажите в теме, чтобы вставить ссылку на ресурс js на стороне клиента внизу страницы, а не в заголовке - Включите ресурс непосредственно на xpage, чтобы он шел после автоматически сгенерированного кода

NB: это необходимо для того, чтобы приложение xpages работало с Foundations http://foundation.zurb.com/docs/

Мне нужно включить файл js основы после того, как события были привязаны к полям

Спасибо!


person Martin Holland    schedule 07.02.2013    source источник
comment
Тот факт, что тег сценария находится в конце страницы, не означает, что он будет запускаться именно в этой последовательности — сценарий начнет выполняться при загрузке страницы — событие dojo.onLoad (в XSP.addOnLoad) начнется после страница полностью загружена, т. е. ПОСЛЕ загрузки библиотеки сценариев Foundations. В идеале вам нужен триггер, чтобы узнать, когда XSP.addOnLoad завершился. Ответ на этот вопрос поможет вам. глядя на сайт фондов - если все инициализировано в apps.js, тогда ваш триггер будет запускать код apps.js, а не запускать его сам.   -  person MarkyRoden    schedule 08.02.2013
comment
Да, оказывается, у меня все равно была проблема. События срабатывали, но код jquery не работал из-за двоеточий в идентификаторах. случайно я наткнулся на ваш xsnippet, который помог мне решить проблему. Ваше здоровье!   -  person Martin Holland    schedule 09.02.2013


Ответы (1)


Попробуйте добавить блок сценария в конце с помощью этого кода:

XSP.addOnLoad(function() {
  document.write('<script src="my.js">');
}

Однако это может выполняться до сгенерированного XSP.addOnLoad. Затем вы можете попробовать небольшой хак, подобный этому:

XSP.addOnLoad(function() {
  setTimeout(document.write('<script src="my.js">'), 200);
}
person Panu Haaramo    schedule 07.02.2013
comment
Ваше здоровье. Я понимаю, как это могло бы сработать, но оказалось, что я неправильно диагностировал проблему. см. мой другой комментарий - это произошло из-за ошибки в коде основы, а не из-за того, что он не был вызван в нужное время. Спасибо за вашу помощь! - person Martin Holland; 09.02.2013