Javascript函数不总是在元素就绪后加载

Javascript函数不总是在元素就绪后加载,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我有一个Javasript函数,它并不总是可以运行。该函数位于jQuery.bind下,该绑定连接到页面上的视频播放器。一旦视频播放器准备就绪,功能应运行,功能的某些元素取决于视频的持续时间,只有在视频播放器准备就绪后才能获得视频的持续时间 它似乎在大多数情况下都有效,但有时(3/10次)无效。不知道为什么会这样 ML = (typeof ML === "undefined") ? {} : ML; ML.player = null; //Initialization of the video

我有一个Javasript函数,它并不总是可以运行。该函数位于jQuery.bind下,该绑定连接到页面上的视频播放器。一旦视频播放器准备就绪,功能应运行,功能的某些元素取决于视频的持续时间,只有在视频播放器准备就绪后才能获得视频的持续时间

它似乎在大多数情况下都有效,但有时(3/10次)无效。不知道为什么会这样

ML = (typeof ML === "undefined") ? {} : ML;
ML.player = null;

//Initialization of the video player
jQuery(document).ready(function() {
    var vidId = vidIdRaw.split("/");
    ML.player = new SV.Player({
        videoId: vidId[0]
    });
    //More functions are initialized under the document.ready

    //Waits for video player to be ready before executing function
    //This is the function that doesn't always run
    ML.player.bind('ready', function(obj) {
        var isReady = true;
        jQuery('#duration-time').html(formatTime(ML.player.getDuration()));
        //Functions initialized above are called and run here as well.
    }
}

我遗漏了大部分函数,因为我必须包含很多代码。我已经包含了相关信息。

尝试在播放器初始化后尽快绑定就绪事件;可能是“更多函数已初始化…”的代码需要很长时间才能执行,您错过了播放机上的就绪事件。

尝试在初始化后尽快将就绪事件绑定到播放机上;可能是“更多函数已初始化…”的代码需要很长时间才能执行,而您错过了播放机上的就绪事件。

我不确定在jQuery中触发事件的效果如何,但根据我看到的代码,我猜测播放机在文档就绪之前已经准备好了3/10。有没有办法测试你的播放器在document.ready函数中是否已经准备好了,如果已经准备好了,在bind中运行代码?嗯,我不确定。怎么会这样呢,我已经在(document.ready)下初始化了视频播放器。视频播放器不应该总是先等待文档准备好吗?所以您要先创建SV.player,然后监听它准备好。是否有可能它将它的就绪事件发送得如此之快,以至于它在返回到document.ready函数之前发生,然后在该函数中绑定事件?如果视频被缓存了?有没有一种方法可以在不注入视频的情况下实例化播放器,并在告诉播放器加载视频之前添加就绪事件。这样它就会一直开火。再一次-我只能猜测你发布了什么代码,但是如果事件没有触发,那只能意味着SV中有错误或者事件顺序是问题所在。托比和迪潘达可能是对的。此外,没有本机的“就绪”事件,它是一个jQuery事件,我假设它使用onreadystatechange来确定时间。它可能并非完美无瑕,请尝试使用此处列出的更为本地的版本:@Toby我正在研究这个问题。我要看看这是否可能,我怎么能做到。我还想提及的是,我曾尝试通过Chrome的开发工具禁用缓存进行测试,但错误依然存在。我不确定在jQuery中触发事件的效果如何,但根据我看到的代码,我猜测播放器在文档准备好之前已经准备好了3/10。有没有办法测试你的播放器在document.ready函数中是否已经准备好了,如果已经准备好了,在bind中运行代码?嗯,我不确定。怎么会这样呢,我已经在(document.ready)下初始化了视频播放器。视频播放器不应该总是先等待文档准备好吗?所以您要先创建SV.player,然后监听它准备好。是否有可能它将它的就绪事件发送得如此之快,以至于它在返回到document.ready函数之前发生,然后在该函数中绑定事件?如果视频被缓存了?有没有一种方法可以在不注入视频的情况下实例化播放器,并在告诉播放器加载视频之前添加就绪事件。这样它就会一直开火。再一次-我只能猜测你发布了什么代码,但是如果事件没有触发,那只能意味着SV中有错误或者事件顺序是问题所在。托比和迪潘达可能是对的。此外,没有本机的“就绪”事件,它是一个jQuery事件,我假设它使用onreadystatechange来确定时间。它可能并非完美无瑕,请尝试使用此处列出的更为本地的版本:@Toby我正在研究这个问题。我要看看这是否可能,我怎么能做到。我还想提及的是,我曾尝试通过Chrome的开发工具禁用缓存进行测试,但错误依然存在。我忘了提及正在初始化的功能是在视频播放器就绪的情况下运行的。它尽可能高。很抱歉,将问题编辑为包含此内容。我忘记提及正在初始化的函数正在视频播放器就绪状态下运行。它尽可能高。抱歉,已将问题编辑为包含此内容。