繁体   English   中英

Safari 5中的$ .getScript()和$(window).load()并不总是有效

[英]$.getScript() and $(window).load() in Safari 5 not always working

我遇到了与此人类似的问题,除了我的问题与脚本有关,与图像无关。

我使用$.getScript()$(window).load() $.getScript()的组合来动态加载JavaScript,并使用脚本完全完成加载后要加载的函数。

它在Chrome中运行良好,但Safari似乎总是会过早触发onload事件。 我想知道是否有某种方法可以迫使Safari等待所有脚本加载,类似于document.body.offsetWidth块。 根据我的理解(以及测试时看到的结果), document.body.offsetWidth阻塞,直到加载样式和图像,但显然不会加载脚本。

编辑:可能值得一提的是,有时它确实可以在Safari 工作,但我看不到任何模式。 有时,在脚本完全加载和执行且通过$(window).load()的处理程序失败之前会触发该事件,因为缺少函数。

根据您的注释,尤其是周围的依赖关系,我将使用RequireJS之类的库。 这将为您提供导入脚本及其依赖项所需的条件,并在满足依赖项时挂接调用函数和代码。

您是否已准备好旧文件?

$(document).ready(function() { 
  //code here 
})

使用它时我从来没有任何问题。 最坏的情况是,您可以将脚本标签放在包含所需代码的所有其他脚本标签之后。

在此示例中,我告诉加载的脚本我需要做一些事情以报告加载到函数中。 加载完所有所需的代码后,我将运行所需的任何代码。

// Simplified callback to check for all scrips loaded.
var numDynScriptsReady = 0,
    numDynScriptsNeeded = 4;

function dynScriptsReady()
{
    numDynScriptsReady++;

    if( numDynScriptsLoaded == numDynScriptsNeeded )
    {
        // Run functions you need after loaded....
    }
}

// Example script get
$.getScript( "http://example.com/script.js", dynScriptsReady );
// etc....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM