我遇到了与this guy类似的问题,除了我的问题与脚本而不是图片有关。
我正在使用$.getScript()
和$(window).load()
的组合来动态加载JavaScript,并使用在脚本完全加载后加载的函数。
它适用于Chrome,但Safari似乎总是过早地触发onload
事件。我想知道是否有某种方法可以强制Safari等待所有脚本加载到document.body.offsetWidth
块。根据我的理解(以及我在测试时看到的结果),document.body.offsetWidth
会阻止样式和图像加载,但显然不是脚本。
编辑:值得一提的是, 有时会在Safari中运行,但我看不到模式。有时,在脚本完全加载并执行之前触发事件,并且传递的处理程序$(window).load()
失败,因为缺少函数。
答案 0 :(得分:1)
根据您所做的评论,特别是那些周围的依赖项,我会使用像RequireJS这样的库。这将为您提供导入脚本及其依赖项所需的内容,并在满足依赖项时挂钩调用函数和代码。
答案 1 :(得分:0)
你准备好了旧文件了吗?
$(document).ready(function() {
//code here
})
使用它时我从未遇到任何问题。在最坏的情况下,您可以在包含所需代码的所有其他脚本标记之后删除脚本标记。
答案 2 :(得分:0)
在这个例子中,我告诉加载的脚本,我需要做一些事情来报告加载到一个函数。一旦我需要加载所有内容,我就会运行我需要的任何代码。
// 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....