У меня есть API, который работает, добавляя скрипт fancybox в главный тег клиентской веб-страницы, но, очевидно, это происходит после того, как dom готов, поэтому функция init fancybox не вызывается
В fancybox.js:
$(document).ready(function() {
$.fancybox.init();
});
Я попытался изменить его на:
$(document).bind('ready', function() {
$.fancybox.init();
});
а затем запускает функцию готовности дома по-разному (один за другим):
$(document).trigger("ready");
$().trigger("ready")
$().ready();
Я также попытался вызвать функцию init при загрузке скрипта:
$.fancybox.init();
Ничто не работает.
Я уверен, что fancybox.css, fancybox.js и даже mousewheel.js и easing.js загружаются в документ, прежде чем пытаться все это, я также добавил таймаут, чтобы быть уверенным.
Итак, вопрос в том, как можно инициализировать плагин fancybox после добавления js в тег заголовка?
Я не думаю, что вам нужно позвонить $.fancybox.init();
но просто инициализируйте правильный селектор после загрузки сценария fancybox, поэтому я бы попробовал в API что-то вроде:
if (!jQuery.fn.fancybox){
// fancybox is not loaded
jQuery.getScript("{path}/jquery.fancybox.js"); // you may need to change the path
setTimeout(function(){
// init fancybox selector
jQuery(".selector").fancybox();
}, 100); // delay selector initialization
} else {
// fancybox script is ready so initialize (re-init) selector
jQuery(".selector").fancybox();
};