小部件构建:Uncaught TypeError: Object [Object Object]没有方法'fan

Widget Building: Uncaught TypeError: Object [object Object] has no method 'fancybox'

本文关键字:Object fan 有方法 构建 Uncaught TypeError 小部      更新时间:2023-09-26

为什么这样做:http://jsfiddle.net/w82W8/1/但这不是吗?: http://jsfiddle.net/w82W8/2/

这个问题可能看起来很复杂;您可能会想,为什么不直接使用第一个!?为什么你要用jQuery来加载JS+CSS资源,你可以很容易地在原始HTML中加载。

嗯,我正在构建一个web小部件的过程中,我想保持嵌入代码尽可能小。这个想法是让用户在他们的代码中包含单个<script type='text/javascript' src='http://mysite.com/widget.js'></script>行,widget.js代码将处理所有细节。包括获取fancybox

Uncaught TypeError: Object [Object Object] has no method 'fancybox'

我假设javascript没有等待fancybox.js加载,并立即尝试将fancybox()应用于触发器。当资产被加载时,我能在这里得到一个回调吗?我确信它们将被包含在DOM中……我已经用Chrome工具检查过了。

我知道这个问题以前在StackOverflow上被问过,但不是在这个上下文中。

谢谢,节日快乐!

在第二个方法中,在fancybox插件加载之前调用fancybox方法。如果您想在加载脚本后执行代码,请使用getScript方法。

的例子:

$.getScript(
    "http://jordanarsenault.com/fancy/fancybox.js",
    function(){
       $(".trigger").fancybox();
    }
);

如果需要高级的资源加载器,可以考虑使用真正的加载器,如yepnope。

因为脚本没有立即加载。您必须使用$.getScript并提供如下回调:http://jsfiddle.net/w82W8/3/.

$.getScript("http://jordanarsenault.com/fancy/fancybox.js", function() {
    $(".trigger").fancybox(); // only run when script is loaded
});