使用Fancybox加载异步

时间:2015-02-04 18:17:06

标签: javascript asynchronous fancybox

我在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 is not function”。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你的意思是执行调用fancybox();而内部是一个问题。比这个功能更有帮助; - )

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

答案 1 :(得分:0)

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

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

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

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