从自定义事件创建的对象未定义

时间:2012-11-09 17:52:22

标签: javascript jquery javascript-events

我正在尝试调试我的问题。我导入了一个同事编写的库,该库将从播放列表中提取YouTube URL。此库完成提取过程后,它将触发事件playlistDone并将YouTube网址放在对象OBJ.youtube.videos中。由于我的网站非常庞大和复杂,我在一个空白网站上测试了这个库,以验证它是否正常工作。

$(document).on('playlistDone', function() {
    console.log( 'done' );
    console.log( OBJ.youtube.videos );
}); 

当我将上述代码移到我的网站时,控制台会确认playlistDone自定义事件,但报告OBJ.youtube.videos未定义。任何人都可以提供任何关于为什么会发生这种情况的建议吗?

我用于测试的空白页样本:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    </head>
    <body>
    <div>
        <h1>Video</h1>
        <div id="player" style="width:650px; height:400px;"></div>
        <hr />
        <div style="width:650px; height:80px; border:solid 2px #e8e; overflow:horizontal" id="thumbnails"></div>
    </div>
    <script src="youtube-playlist-lib.js?playlistId=PLA249A8D68B9C95F7&dom=player&thumbnails=thumbnails"></script>
    <script type="text/javascript">
        $(document).on('playlistDone', function() {
           console.log( 'done' );
           console.log( OBJ.youtube.videos );
        }); 
    </script>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

OBJ.youtube.videoyoutube-playlist-lib.js中创建。因此,如果您在包含youtube-playlist-lib.js之前尝试使用它,则会收到错误,因为您在未设置时会尝试使用。

确保在>包含youtube-playlist-lib.js之后使用

答案 1 :(得分:0)

事实证明,代码根本没有任何问题。相反,Chrome正在缓存旧版本的库。