将脚本附加到头部后触发$.fancybox.init()

Trigger $.fancybox.init() after appending the script to the head

本文关键字:fancybox init 脚本 头部      更新时间:2023-09-26

我有一个API,它可以将fancybox脚本附加到客户端网页的head标签,但很明显,这是在dom准备好之后发生的,因此不调用fancybox的init函数
在fancybox.js:中

$(document).ready(function() {
    $.fancybox.init();
});

我试着把它改成:

$(document).bind('ready', function() {
    $.fancybox.init();
});

然后以不同的方式(逐一(触发dom就绪功能:

$(document).trigger("ready");
$().trigger("ready")
$().ready();

我还尝试过在加载脚本时调用init函数:

$.fancybox.init();

似乎什么都不管用
我确信在尝试所有这些之前,fancybox.css、fancybox.js,甚至mousewheel.js和easing.js都已加载到文档中,我还添加了一个超时来确定
所以问题是,在将js附加到head标签后,如何初始化fancybox插件?

我认为您不需要调用$.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();
};