使用Fancybox加载的异步

Using Fancybox loaded async

本文关键字:异步 加载 Fancybox 使用      更新时间:2023-09-26

我正在一个onload函数中加载Fancybox-lib-async:

function myLoad(){
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'miurl.com';
    var x = document.getElementsByTagName('script')[document.getElementsByTagName('script').length - 1];
    x.parentNode.insertBefore(s, x);
}
<body onload="myLoad()">

脚本被添加到我的脑海中,但当我尝试时:

$("#myDiv").fancybox();

执行myLoad()后,控制台在fancybox插件调用中显示"Uncaught TypeError:undefined不是函数"。

有什么想法吗?

将我的评论转化为答案,因为它解决了您的问题:

在尝试使用脚本之前,您必须"等待"脚本完成加载。异步加载意味着它将在后台加载,稍后完成加载,而加载过程中的其他事情仍在继续。

如果jQuery已经可用,则可以使用$.getScript()并使用成功处理程序回调函数来了解它何时完成加载。

$.getScript(yourFancyBoxCodeURLHere, function() {
    $("#myDiv").fancyBox();
});

您的意思是调用fancybox();被执行并且内部有问题吗。则此功能将有所帮助;-)

或者你的意思是$("#myDiv")是问题所在,因为为什么它应该有一个函数fancybox()。这很难猜测,因为你给我们的信息很少。